日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【C语言】从入门到入土(入门篇)

發布時間:2024/3/26 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C语言】从入门到入土(入门篇) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

提問:什么是c語言?吃語言,菜語言?

不不不,餓了就去飯堂哈。

C語言是一門面向過程的計算機編程語言

與C++、Java等面向對象編程語言有所不同,C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。C語言描述問題比匯編語言迅速、工作量小、可讀性好、易于調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編語言代碼生成的目標程序效率低10%-20%。因此,C語言可以編寫系統軟件。

簡單的說:C語言會讓你變禿,變禿會讓你變強。

接下來就讓我們進入C語言的世界吧!

文章目錄

  • 前言
  • 一、寫c語言代碼的第一步是什么?
  • 二、c語言入門
    • 1.數據類型
    • 2.變量
    • 3.常量
    • 4.字符串+轉義字符+注釋
      • 1.字符串
      • 2.轉義字符
      • 3.注釋
    • 5.基礎語句
      • 1.選擇語句
      • 2.循環語句
        • 1.這里先講while循環:
        • 2.再講for循環
        • 3.do...while循環
    • 6.函數
    • 7.數組
    • 8.操作符
    • 9.常見關鍵字
    • 10.指針
    • 11.結構體


一、寫c語言代碼的第一步是什么?


編程之路:

有同學說,c語言嘛
這不就是先來個預處理#include <stdio.h> ?

不不不,是先下載寫代碼的軟件。這里推薦使用vs2019。
下面是下載鏈接:

點我去下載唄 Visual Studio 2019 IDE 下載


然后就是打代碼啦!

#include<stdio.h> //主函數//stdio--標準輸入輸出 int main() {printf("hello world!");//printf--打印函數return 0; } 解釋: //main函數是程序的入口 //一個工程中main函數有且僅有一個

該來的還是要來的,每個學c語言的人都會看見的第一個代碼 hello world!

二、c語言入門


什么是入門?



所以想要學習好C語言,首先要大概了解一下C語言中的點點滴滴。就好像你想追一個女生你也會先去了解她,然后再去追不是嗎?那么接下來就讓我們進入C語言(入門篇)吧!

1.數據類型

字符字符類型
char字符數據類型
short短整型
int整型
long長整型
long long更長的整型
float單精度浮點數
double雙精度浮點型

那么啥是數據類型呢,簡單的說就是把數據分成所需內存大小不同的數據。在聲明變量時也可指定它的數據類型分出數據類型。所有變量都具有數據類型,以決定能夠存儲哪種數據。

這里先說一下計算機中的單位

我們存儲東西的時候需要空間吧,那么在代碼的世界了也是需要的,比如我需要存儲一個數字,那么我就需要一些內存去存儲他。然后呢就需要向內存申請內存,比如我要存儲一個10,那么我就可以用int去申請內存存儲他。這幾個類型都是以字節為單位,比如 int 類型就會占用4個字節。存在這么多的類型,其實是為了更加豐富的表達生活中的各種值。

那么這些數據類型又分別是什么呢?
我們來看一下:

#include <stdio.h> int main() {printf("The size of short is %d bytes.\n",sizeof(short));//short就是存儲整形但是是短一點的整形,那為什么要用這個呢//因為內存空間有限,不需要那么多就不要申請那么多啦printf("The size of int is %d bytes.\n",sizeof(int));//這個就是整形哦,就是存儲整數。printf("The size of long is %d bytes.\n",sizeof(long));//長整形,就是要存更大的整數的時候用。printf("The size of float is %f bytes.\n",sizeof(float));//浮點型,就是存儲帶小數的數。printf("The size of double is %lf bytes.\n",sizeofdouble));//雙精度,就是存儲帶小數的數但比上面那貨精確位數更多。printf("The size of char %c bytes.\n",sizeof(char));//這個就不一樣啦,是存儲字符的一個數據類型。return 0;注意:輸出整形的時候用的是%d,但float類型的時候是%f,double類型的時候是%lf。}

2.變量

上面我們知道了數據類型,還有一點點代碼。
現在該來認識變量啦。我們先來看一下這一段代碼:

#include <stdio.h>int main() int c=111; {int c=222;printf("%d",c);return 0; }

變量分為兩類,局部變量和全局變量。想區分他們其實也不難,局部嘛就是一部分地方有用,而全局就是在那里都有用。

像上面的int c=111就是定義一個變量c,注意他沒在括號里面哦,所以他的活動范圍就非常的大,是全局變量。而int c=222被束縛在括號的牢籠里,就是局部變量啦。

即局部變量的作用域是變量所在的局部范圍。 全局變量的作用域是整個工程。

那么問題來了,上面的c的值是多少呢?
是222!!

注意:當局部變量和全局變量同名的時候,局部變量優先使用。

tip:這樣寫的代碼其實不太好也沒必要,還是少寫為妙。


3.常量

注意:一個變量不能被改變我們就說具有常屬性 - 不能被改變的屬性

C語言中的常量分為以下以下幾種:
1.字面常量
2.const 修飾的常變量
3.#define 定義的標識符常量
4.枚舉常量

我們還是在代碼塊里面看:

#include <stdio.h> int main()#define pai 100//#define的標識符常量{double a = pai;520;//字面常量,就是一個字面上的量。const int a=100;//const 修飾的常量,變成一個常變量,常變量不能改變。a=200//錯誤,常屬性不能改。}

枚舉常量就是舉列出來的常量:

#include <stdio.h> //舉例 enum book//枚舉 {MATH,CHINESE,ENGLISH }; //括號中的MATH,CHINESE, ENGLISH是枚舉常量.

4.字符串+轉義字符+注釋

1.字符串

前面我們說到了字符和char數據類型,那一連串的字符就是字符串了,如"are you ok?"。像這樣由雙引號(Double Quote)引起來的一串字符稱為字符串字面值(String Literal),或者簡稱字符串。需要注意的是,每一段字符串結束都會有一個結束標志“\0”,不然輸出字符串會繼續亂碼下去。直到碰上一個亂碼剛好是“\0”。

例如:

在這里,arr[ ]是一個數組,現在暫且把它看作一個可以存放多個字符的容器,圖中arr1中輸入的是字符串,會自帶“\0”以結束。arr2將其分解為一個一個的字符輸入,就沒有自帶了,如果需要就要像arr3一樣自己輸入一個。由此看出“\0”是多么重要。

那么一個轉義字符“\0”就很重要了,那么其他轉義字符呢?

2.轉義字符

我們先來看一段代碼:

#include <stdio.h> int main() {printf("a:b\c\defg\n");return 0; }在前面已經知道 printf("")是輸出 這里的代碼結果會是什么呢?會是 "a:b\c\defg\n" 嗎?

我們來看一下:

很明顯不是,這是因為c語言中存在轉義字符,轉義字符顧名思義就是轉變意思。就比如其中的"\n",加上 \ 之后n就不是n了,而是換行的意味。

下面我們來看看常見的轉義字符:

轉義字符作用釋義
?在書寫連續多個問號時使用,防止他們被解析成三字母詞
用于表示字符常量’
"用于表示一個字符串內部的雙引號
\用于表示一個反斜杠,防止它被解釋為一個轉義序列符。
\a蜂鳴
\b退格符
\f進紙符
\n換行
\r回車
\t水平制表符
\v垂直制表符
\dddddd表示1-3個八進制的數字
\xdddd表示2個十六進制的數字

這些轉義字符大家可以自己去嘗試一下,這里就不一一展示了。


3.注釋

作用:

  • 代碼中有不需要的代碼可以直接刪除,也可以注釋掉。
  • 代碼中有些代碼比較難懂,可以加一下注釋文字。
  • 在vs2019中,如果你想注釋掉你打的代碼,你可以:

    選中后你也可以使用快捷鍵:

    注意:
    c語言中有兩種注釋方式,第一種是"// “的單行注釋。
    另一種是” /* xxxxxxx(內容) */"的范圍注釋。
    即一種是以 / * 開始、以 */ 結束的塊注釋(block comment);
    另一種是以 // 開始、以換行符結束的單行注釋(line comment)。


    5.基礎語句

    在C語言中可以實現很多程序的運行,而運行這些程序不能僅僅靠輸入輸出,所以C語言提供了多種語句來實現這些程序結構。

    1.選擇語句

    選擇語句就是你選擇什么就會對應一個結果。
    if(條件),若條件成立,就執行。
    像這樣:

    #include <stdio.h> int main() {int x = 0;printf("上了大學你會好好學習嗎?\n");printf("輸入1代表會,輸入0代表不行\n");scanf("%d", & x);if (x == 1){printf("好好學習的你,畢業后會得到一份好工作!\n");}else{printf("你沒有好好學習,畢業后回家種地吧!\n");}return 0; }

    輸出結果:

    這就是C語言中的 if 選擇語句。


    2.循環語句

    這個可以自己看看研究一下: #include <stdio.h> #include<stdlib.h> #include<time.h> int main() {printf("上大學了\n");srand((unsigned)time(NULL));int n = rand();//生成隨機數printf("中彩票在第%d天\n", n);printf("想成功要學習985天\n");//好好學習985天if (n <985){printf("中了1000萬\n", n);printf("迎娶白富美 走上人生巔峰\n");}else{int line = 0;while (line <= 985){line++;printf("買彩票\n");printf("沒中\n");printf("好好學習\n");}if (line >985){printf("成為大神\n");printf("迎娶白富美 走上人生巔峰\n");}}return 0; }

    好嘞這個數字還是讓我們好好學習,不要相信一夜暴富!

    C語言中的循環語句有:
    1.for循環
    2.while循環
    3.do while循環

    1.這里先講while循環:

    假設你是一位夢想成為程序員的大學生 當你天天敲代碼敲到足夠多的時候,成為程序員: //while循環的實例 #include <stdio.h> int main() {printf("上大學\n");int daima = 0;while (daima <= 20000){daima++;printf("繼續努力敲代碼\n");}if (daima > 20000)printf("成為聰明絕頂程序員\n");return 0; }
    所謂while語句就是格式為while(表達式){循環體},括號里面為條件,先判斷while語句()里面的條件是否符合,滿足時執行{ }里面的循環體,并再次回到while()前先判斷后執行直到while括號里面的條件不滿足為止.(實際上是判斷while()括號里面為真還是假)

    值得注意的是,while循環是先執行在判斷!

    像上面的while(daima<=20000)就是當daima這個數值小于20000的時候,我就會運行下面的循環體,即將代碼的數值+1,然后輸出一個"繼續努力敲代碼"。然后繼續循環。然后還加了一個我們上面說到的if語句,當while語句執行完成后跳出循環接到if語句,此時daima已經是20001了,所以輸出了!

    2.再講for循環

    直接上代碼!!

    #inlcude <stdio.h> int main() {int n=0;scanf_s("%d",&n);int i = 0;for (i = 0; i < n; i++){printf("*");}printf("\n");return 0;}

    運行結果:

    這里的話是一個輸入語句,輸入一個數,然后就到我們的for循環啦,首先for循環的格式就是for(單次表達式;條件表達式;末尾循環體){中間循環體;}。

    簡單的說就是for(初始值;條件;循環①){ 循環體② },這里的例題就是:i=0,然后當i<n的時候,就先循環②,再循環①。

    像這里,我是想打印多個 * 號的,所以我先讓代碼輸入一個數字,然后for循環里面的初始值與輸入值對比,然后我這里輸入的是5,第一遍循環,i<n成立,先執行輸出一個 * ,然后執行i++,再回到判斷條件繼續循環,注意,這里的i回去已經刷新為i=1了,然后慢慢加到5,就跳出循環,然后每一次都輸出了一個 * ,最后有5個 * 號。

    3.do…while循環

    然后是do…while循環,這個呢與while循環類似。但是不一樣的在于while循環是先判斷一下是否滿足條件的。但是do…while循環就不一樣,他直接先來循環一次,再進行判斷。

    可以理解為while循環是開始就判斷條件,而do…while循環是結尾再做判斷,先斬后奏。先do了再說。

    比較一下兩個代碼

    注意:雖然這里他們的輸出結果是一樣的,但是他們的初始狀態是不一樣的,while循環是先判斷num是否小于10,小于我就進入,然后執行循環體,再回到判斷。而do while 就是管你三七二十一,直接先執行一波,再問你,誒,有沒有小于10,小于我再回去繼續噢。

    這就是do while循環。


    6.函數

    來了來了,c語言中的函數來了,是不是還在煩高中的函數呢,放心,c語言中的函數也很難(bushi),那么c語言為什么要引進函數這個概念呢?函數的特點就是簡化代碼,代碼復用。所以為了簡化某些冗長的代碼,就用到了函數。

    像這樣的:

    int main() {int num1 = 0;int num2 = 0;int sum = 0;printf("輸入兩個操作數:>");scanf("%d %d", &a, &b);sum = num1 + num2;printf("sum = %d\n", sum);return 0; }

    通過上面的學習,我們知道這是一個輸入兩個整數,然后讓他們相加再輸出的一個代碼。那如果我需要計算很多個兩個數相加,是不是要敲很多個這樣的代碼呢,是不是要定義很多個這樣的變量呢?

    那么我們就可以利用函數來解決這個問題:

    #include <stdio.h> int Add(int x, int y) 這里是定義一個相加的函數 {int z = x+y; 表示如何相加return z; 返回值 }int main() {int num1 = 0;int num2 = 0;int sum = 0;printf("輸入兩個操作數:>");scanf("%d %d", &num1, &num2); 正常操作sum = Add(num1, num2); 調用函數printf("sum = %d\n", sum);return 0; }

    像這個代碼,就是先定義一個函數,然后再引用,因為如果我們需要很多類似的運算,那么重復寫就太冗余了,所以可以直接用函數去簡化。


    7.數組

    當我們簡化代碼的時候,還可以考慮簡化其他東西,如果我們需要10個數字,是不是要定義10個變量呢,當然也是可以的,但100個1000個呢,于是我們可以運用數組來進行代替。

    數組的定義:一組相同類型元素的集合。

    int main() {int a = 1;int b = 2;int c = 3;int d = 4;int e = 5;//太冗長了!!!int arr[5] = { 1,2,3,4,5 };//定義一個整形數組,里面最多存放5個元素 }

    同樣的,想要存放字符也一樣可以:

    int main() {char ch[5] = {'a','b','c','d','e'};return 0}

    而當我們想要像變量一樣打印出來的時候:

    int main() {int arr[5] = { 1,2,3,4,5 };printf("%d\n", arr[0]);printf("%d\n", arr[1]);printf("%d\n", arr[2]);printf("%d\n", arr[3]);printf("%d\n", arr[4]);printf("%d\n", arr[5]); }

    他的結果是:

    這里就需要注意了,當我們定義數組并且想引用某一個數的時候,我們想要寫的下標是你想要數組中第n個數的n-1,也就是說我需要arr[ ]中的第四個數,我輸入的是arr[3],因為arr[5]代表的是這個數組,而不是其中某一個數。


    8.操作符

    操作符有很多種類:

    這里先不敘述,到時候會專門寫一篇關于操作符的文章。


    9.常見關鍵字

    auto:聲明自動變量一般不使用 double:聲明雙精度變量或函數 int:聲明整型變量或函數 struct:聲明結構體變量或函數 break:跳出當前循環else:條件語句否定分支(與if連用) long:聲明長整型變量或函數 switch:用于開關語句 case:開關語句分支 enum:聲明枚舉類型register:聲明積存器變量 typedef:用以給數據類型取別名(當然還有其他作用) char:聲明字符型變量或函數 extern:聲明變量是在其他文件正聲明(也可以看做是引用變量) return:子程序返回語句(可以帶參數,也看不帶參數)union:聲明聯合數據類型 const:聲明只讀變量 float:聲明浮點型變量或函數 short:聲明短整型變量或函數 unsigned:聲明無符號類型變量或函數continue:結束當前循環,開始下一輪循環 for:一種循環語句(可意會不可言傳) signed:生命有符號類型變量或函數 void:聲明函數無返回值或無參數,聲明無類型指針(基本上就這三個作用) default:開關語句中的“其他”分支goto:無條件跳轉語句 sizeof:計算數據類型長度 volatile:說明變量在程序執行中可被隱含地改變 do:循環語句的循環體 while:循環語句的循環條件 static:聲明靜態變量

    這里也是草率的一筆帶過,到時候會寫一篇關于關鍵字的文章。


    10.指針

    c語言指針其實是一個整形變量,與其它數據不同的是,它的作用是用來存儲其它變量的地址。指針(Pointer)是編程語言中的一個對象,利用地址,它的值直接指向(pointsto)存在電腦存儲器中另一個地方的值。由于通過地址能找到所需的變量單元,可以說,地址指向該變量單元。因此,將地址形象化的稱為“指針”。意思是通過它能找到以它為地址的內存單元。

    ——所謂指針,就是把計算機內存變成小格子,每一個叫做內存單元。給每個內存編個號。把編號稱為地址。每一個地址用多少內存合適,單位上的話bit太少了,byte比較合適。變量都會有地址。

    打個比方:有個人讓你去老王家幫他拿個被子,那么老王家是這個變量a,但是那個人現在把老王家所在的地址寫在紙上給你,那么這張紙就可以看做一個指向老王家的指針。

    比如:

    int main() {int num = 10;&num;//取出num的地址printf("%p\n", &num);//打印地址,%p--以地址的形式打印return 0; }

    這里顯示的就是變量num的地址,這就是num所占的空間。那地址如何存儲?這里就需要定義指針變量了。

    #include <stdio.h> int main() {int num = 10;int *p = &num; *p = 20;return 0;這里的 * 代表這個p是一個指針變量,而前面的int 代表p指向的對象num是一個int類型的變量。 }

    意思就是說我講num這個變量的值10的存在內存中,這個內存的地址存到了p里面。同樣的,要寫一個字符的指針,就應該是:

    char ch='a'; char * q=&ch;

    所以,每一個變量都有地址,因為這個地址可以很好的指向這塊空間,也就是說他可以找到這塊空間,所以我們把這個地址抽象的稱為指針,所以當一個變量儲存到指針上(像上面的p),我們就稱為指針變量。這里只是簡單了解一下,后面我們還會更深入的學習指針。



    11.結構體

    在C語言中,結構體(struct)是指由一系列具有相同類型或不同類型的數據構成的數據集合。結構體可以被聲明為變量、指針或數組等,用以實現較復雜的數據結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。

    簡單的說,結構體使得C語言有能力描述復雜類型。

    struct book {char name[20];//書名int price;//價格long num;//編號char category[15];//類別 };struct book s = {"c語言編程入門"5804958751469, 計算機類}; //給s打印結構體信息printf("name = %s price = %d num = %ld category = %s\n", s.name, s.price, s.num, s.category); //為結構成員訪問操作符

    像上面的,就是所謂的結構體,填入相關數據,讓c語言有更加好的描述環境。


    好啦,本篇文章到此結束啦,這里是簡單的結束了c語言中很多重要的東西,讓我們初步的認識c語言,有一個大概的思想框架,讓我們接下來繼續努力學習c語言吧。另外,本人小白,有錯誤敬請糾錯,第一次寫這么長的文章實屬不易,如果各位看官覺得還行,不妨給個一鍵三連,一起成長一起學習鴨!

    總結

    以上是生活随笔為你收集整理的【C语言】从入门到入土(入门篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。