初識C語言2

在上一篇中,對C語言的編譯器進行了說明,而且着重講述瞭如何使用VS,緊接着就講述瞭如何寫第一個C語言程序,而後依次介紹了數據類型,再以後就介紹了變量的定義分類和使用,有不清楚的能夠去翻閱一下個人博客「初識C語言1」中的內容。數組

常量

今天咱們接着上一次說,上一次說到了變量,但是咱們的生活中不止有像年齡、身高、體重等會變的量,還有例如身份證號碼、血型、圓周率等不變的量,C語言做爲人類和計算機交流的語言也必需要涉足於這些量,因此在C語言中,咱們把這些不能改變的量稱之爲常量。ide

常量的分類

在C語言中常量分爲4類:字面常量、const修飾的常變量和#define定義的標識符常量以及枚舉常量。
給出如下示例代碼:函數

#include <stdio.h>
#define PI 3.14 //此時PI爲#define定義的標識符常量,其值爲3.14
enum Sex//定義枚舉常量的枚舉關鍵字enum
{
            MAN,
            FEMALE,
            SECRET
}//此時MAN,FEMALE,SECRET爲枚舉常量,其值由系統分配,是不可改變的
int main()
{
            3;//字面常量
            100;//字面常量
            const int num=4;//此時num是const修飾的常變量,其值爲4在使用過程當中不可變
}

代碼是很簡單的代碼,帶了註釋,方便你們理解,在註釋裏面也分別標識了四種常量。
字面常量,就是直接給出的常量,例如:1,2,3,4,5,6,7等等,像上示例代碼中的3和100等直接給出的常量均爲字面常量。
const修飾的常變量,其是變量被const修飾以後就具備了常屬性,其在編譯中是按變量編譯的,這和C++是有區別的,在C++中const修飾的常變量是一個常量。
#define定義的標識符常量,就我我的理解#define定義的標識符常量就是一種定義方式而已,在上示例代碼中,PI就是此種常量,它的值爲3.14是不能夠改變的。
還有最後一種就是枚舉常量,枚舉常量就像列舉法同樣,把全部的量都一一列舉出來,每個列舉出來的量,系統都會給其分配一個值,這個值是固定的,不可改變的,能夠直接打印輸出的。學習

字符串、轉義字符和註釋

字符串

前面咱們介紹數據類型的時候介紹過字符型數據,可是在生活中咱們常常會用到多個字符連在一塊兒的字符串:測試

"Hello world!"

像上面示例代碼中用雙引號包起來的一串字符就是字符串,在C語言中咱們能夠用數組來儲存字符串。code

#include <stdio.h>//輸入輸出函數的頭文件
#include <string.h>//求字符串長度的函數的頭文件
int main()
{
            char arr1[]="abc";//定義字符型數組保存字符串
            char arr2[]={'a','b','c'};//定義字符型數組保存字符串
            char arr3[]={'a','b','c',0};//定義字符型數組保存字符串
            printf("arr1=%s\n",arr1);//輸出字符串
            printf("arr2=%s\n",arr2);//輸出字符串
            printf("arr3=%s\n",arr3);//輸出字符串
            //strlen--求字符串的長度的函數,是C語言庫函數,在使用以前必須打招呼
            printf("arr1字符串長度爲:%d\n",strlen(arr1));//輸出字符串長度
            printf("arr2字符串長度爲:%d\n",strlen(arr2));//輸出字符串長度
            printf("arr3字符串長度爲:%d\n",strlen(arr3));//輸出字符串長度
            return 0;
}

示例代碼運行結果以下:
初識C語言2
經過上面運行結果,發現輸出字符串的時候,arr2數組輸出出現亂碼的狀況,而arr1和arr3輸出的就是咱們須要的結果,在輸出字符串長度時,arr1和arr3字符串長度都是3個字節,而arr2的字符串長度倒是15個字節,而arr2和arr3最主要的區別就是:arr3數組裏面有(0),而arr2裏面沒有,這個0是相當重要的。
在C語言中字符串的結束標誌是'\0',這個'\0'是一個轉義字符(等會會說到)在計算字符串長度時,以'\0'爲結束標誌,其不算字符串的內容。而在ASCII碼錶中'\0'對應的就是十進制下的0。
因此在上述示例代碼中,arr2中是沒有結束標誌的,arr3中有結束標誌'\0',因爲是字符型數組,因此數組中的內容在編譯的過程當中會按ASCII碼將十進制0轉換成'\0'故:arr3中是有結束標誌的,在arr1中,雖然沒有寫'\0'可是雙引號內的字符串都會默認最後有'\0'結束標誌,故arr3和arr1均有字符串結束標誌,在編譯完成以後輸出了咱們想要的結果,而arr2中沒有字符串結束標誌,故其在輸出過程當中,出現了亂碼,在輸出字符串長度時是一個隨機值,當讀完數組元素後還會往下讀,直到讀到'\0'結束標誌才停,故其輸出的內容不是咱們想要的結果,輸出的字符串長度是隨機值。blog

轉義字符

轉義字符,顧名思義就是改變意思的字符,咱們來看一個示例代碼:字符串

#include <stdio.h>
int main()
{
            printf("E:\class\test.c\n");
            return 0;
}

運行結果以下:
初識C語言2
咱們原本是要打印一個目錄的,結果運行結果不盡人意,主要是在編譯的過程當中,系統把'\t'當作轉義字符(水平製表符)來編譯了,才致使出現了截圖的運行結果。
在C語言中還有很多轉義字符,就是經過'\'和字符來組成的,出現這種狀況咱們一般要在'\'以前再加上一個'\'變成'\'(其實也是轉義字符)來消除以上狀況,能夠將上述示例代碼進行修改爲以下代碼:編譯器

#include <stdio.h>
int main()
{
            printf("E:\class\test.c\n");
            printf("E:\\class\\test.c\n");
            return 0;
}

在運行的過程當中出現了一個小插曲,我所寫的代碼文件被個人電腦管家誤認爲是***了。。
初識C語言2
遇到這種狀況你們不用着急,由於大部分的***都是人爲編寫的,因此各類殺毒軟件對咱們編寫的代碼文件都極爲敏感,會出現一不當心就判斷爲***的狀況,咱們只需找回文件,以後將咱們代碼文件放入信任區便可。
初識C語言2
將文件放入信任區以後咱們就能夠正常運行了。
運行結果以下:
初識C語言2
在第5行代碼中將'\'變成了'\'便可以正常的打印目錄。
下表是常見的轉義字符:
初識C語言2博客

註釋

代碼中有不須要的代碼能夠刪除掉,也能夠註釋掉;
代碼中有比較難懂的代碼能夠加一些註釋方便其餘人閱讀,以及後面本身查閱。
C語言註釋:

/*111111111*/

其存在缺陷:不能嵌套註釋

/*
1111111/*111111*/1111
*/

在上述示例代碼中
初識C語言2
框框裏面的內容沒有被註釋,這是由於在C語言中當編譯到'/*'後但凡遇到了'*/'就會結束註釋,所以C語言風格的註釋最大的缺陷就是不能嵌套註釋。
C++註釋:

//1111111111
//1111111111

能夠註釋一行也能夠註釋多行。
鑑於以上,在寫代碼過程咱們一般使用C++註釋,C語言註釋用的少。

選擇結構

在生活中咱們會面臨着各類各樣的選擇,C語言做爲人類和計算機溝通的語言,也應該有相應的語句與咱們平常生活中的選擇相對應。在C語言中須要根據某一條件是否知足來決定是否執行指定的操做任務,或者從給定的兩種或多種操做中選擇其一,這樣的結構叫作選擇結構。
C語言中有兩種選擇語句:if語句和switch語句,初識C語言不作闡述,後面聊選擇結構的時候細說。僅舉個示例:

#include <stdio.h>
int main()
{
            int i;
            printf("是否有好好學習?(如有好好學習,請鍵入非零正整數;若沒有好好學習,請鍵入0)\n");//給出選擇
            scanf("%d",&i);
            if(i==0)//判斷
                        printf("請好好學習\n");//一種選擇下的結論
            else
                        printf("真棒!請繼續加油\n");//另外一種選擇下的結論
            return 0;
}

兩種不一樣選擇時的運行結果以下:
初識C語言2
上述示例代碼的做用就是判斷有沒有好好學習,如有好好學習則鍵入一個非零正整數,輸出'真棒!請繼續加油',若沒有好好學習則鍵入一個0,輸出'請好好學習'。此選擇結構採用了if選擇語句。

循環結構

在生活中,咱們天天都要吃飯,天天都要工做或者學習,咱們會常常重複着同一件事情,在C語言中,也有相應的語句與之相對應。重複着同一個語句,這樣的結構叫作循環結構。
C語言中循環語句有三種:while語句、for語句以及do...while語句,初識C語言不作闡述,後面聊循環結構的時候細說。僅以while語句爲例來舉一個示例代碼:

#include <stdio.h>
int main()
{
            int a=1;
            while(a<=10)//結束循環的條件
            {
                        //循環體
                        printf("%d\t",a);//'\t'轉義字符(水平製表符)使其輸出整齊
                        a=a+1;
            }
            printf("\n");//'\n'轉義字符(換行)
            return 0;
}

運行結果以下:
初識C語言2
上述示例代碼中運用了while循環來依次輸出了1,2,3,4,5,6,7,8,9,10這十個數字。

函數

C語言程序是由語句構成的,而實現一個小功能的多個語句結合而成,給封裝起來就變成了函數,函數的做用就是使程序簡單化,防止重複使用一樣的多行代碼。
舉個栗子:

#include <stdio.h>
int Max(int a,int b)//函數聲明
{
            if(a>=b)
                        return a;
            else
                        return b;
}
int main()
{
            int x,y,m,n,max;
            printf("請輸入兩個正整數x,y:\n");
            scanf("%d %d",&x,&y);
            printf("請輸入兩個正整數m,n:\n");
            scanf("%d %d",&m,&n);
            max=Max(x,y);//調用函數
            printf("x和y這兩個數較大的是:%d\n",max);
            max=Max(m,n);//調用函數
            printf("m和n這兩個數較大的是:%d\n",max);
            return 0;
}

運行結果以下:
初識C語言2
上述示例代碼實現的功能就是依次鍵入兩組數,每組數中有兩個數字,輸出每組數中的最大值,代碼中輸出最大值功能的代碼被封裝在自定義的Max函數中,後面經過調用Max函數來實現輸出最大值功能。

數組

在咱們數學中有集合的定義,也就是具備相同屬性的事物的集合稱之爲一個集合,集合裏面的每一個事物稱之爲元素,在C語言中也有與之對應的定義----數組。
在C語言中:一組相同數據類型的元素的集合稱之爲數組。

數組的定義

在C語言中,數組的定義和變量定義差很少,看實例:

char arr[10];//定義了一個字符型數組
int arr1[3]={1,2,3};//定義了一個整型數組,並賦值

在上述實例中,arr是一個字符型數組,其容量爲10,也就是說裏面最多隻能有10個元素,arr1爲整形數組,而且其被賦值,裏面有3個元素,3個元素的值依次爲1,2,3。

數組的使用

在C語言中,咱們一般經過訪問下標來訪問數組中的元素,使用循環結構來輸出一個數組,例如:

#include <stdio.h>
int main()
{
            int n=0;
            int n1=0;
            int arr[10]={1,2,3,4,5,6,7,8,9,10};//定義一個整型數組,元素個數爲10,並賦值
            //打印數組元素
            while(n<=9)
            {
                        printf("打印數組的第%d個元素:%d\n",n,arr[n]);//經過下標來訪問數組元素,下標由0開始
                        n=n+1;
            }
            printf("數組所佔字節大小:sizeof(arr)=%d\n",sizeof(arr));//sizeof是計算數據類型長度(單位是字節),是C語言的庫函數,其頭文件和printf函數的頭文件相同
            n1=sizeof(arr)/sizeof(arr[1]);//數組的元素個數=整個數組的數據類型長度/每一個元素的數據類型長度
            printf("數組中元素的個數:n1=%d\n",n1);
            return 0;
}

運行結果以下:
初識C語言2
在C語言中,是經過下標來訪問數組元素的,下標是由0開始的,經過循環結構依次來訪問數組元素,進而輸出數組中各元素。

操做符

初識C語言不作闡述,後面聊操做符的時候細說。僅作簡單介紹:

算術操做符

+      -      *      /      %

移位操做符(二進制基礎上對位操做)

>>      <<

位操做符(二進制基礎上對位操做)

&      ^      |

賦值操做符

=      +=      -=      *=      /=      &=      ^=      |=      >>=      <<=

單目操做符

!              邏輯反操做                                       
-              負值                                                  
+             正值                                                  
&             取地址                                              
sizeof      操做數的類型長度(以字節爲單位)
~             對一個數的二進制按位取反               
--             前置、後置--                                     
++           前置、後置++                                    
*              間接訪問操做符(解引用操做符)    
(類型)      強制類型轉換

關係操做符

>                                   
>=                                 
<                                   
<=                                 
!=       用於測試「不相等」
==      用於測試「相等」

邏輯操做符

&&      邏輯與
||         邏輯或

條件操做符

exp   ?   exp2   :   exp3

逗號表達式

exp1,exp2,exp3,…expN

下標引用、函數調用和結構成員

[]      ()      .      ->

此篇結束

相關文章
相關標籤/搜索