C語言的重要知識點

2021-09-29 13:09:42 字數 2327 閱讀 2962

一、陣列與指標

1、陣列名就是陣列的首位址,一維陣列中 nums = &nums[0], 二維陣列中 nums = &nums[0][0]

2、一維陣列中 nums[i] <=> *(nums + i),二維陣列中可以模擬,即把 nums[i][j] 中的nums[i]看作陣列名, 所以二維陣列中的 nums[i][j] <=> *(nums[i] + j),並最終表示為 nums[i][j] <=> * ( * (nums + i ) + j)

3、在c語言當中,字串陣列可以使用: char a [10]; 或者 char *a; 表示,前一種表示方式固定了每個字串的最大大小。第二種沒有字串的大小限制。

4、c語言中檢視陣列中元素個數的方法

使用函式sizeof(),sizeof(test)測量的是陣列test的大小,sizeof(test[0])測量的是test陣列中第乙個元素的大小,做除法運算之後得到的結果就是陣列元素的個數。由於此陣列的型別是double,故sizeof(test[0])也可以寫作sizeof(double),

注:乙個double型別的資料佔8個位元組

二、函式

1、c語言中內建函式 malloc()的意思是動態分配記憶體,以下兩句的意思(int * nums; nums = (int *)malloc(20); ) 跟 int nums[5]; 的意思一樣,因為乙個整型資料佔4個位元組,所以5個整型資料佔20個位元組,使用函式malloc()的好處是在陣列用完之後可以使用 free(nums) 來把記憶體釋放掉,在使用次函式之前要加上stdlib.h的標頭檔案。

malloc()與calloc()的功能基本一樣,但是calloc()不需要強制型別轉換,並且在使用calloc()會後會自動給陣列元素賦初值。

三、字串

1、字串與字元陣列

字串和字元陣列的區別是:最後一位是否是空字元\0。

names1是字元陣列,要想被作為字串,最後乙個字元必須為「\0」,names2是字串,末尾預設以 \0 結束,即:字元陣列不一定是字串,但字串一定是字元陣列***

2、字元與字串

char 稱為字元型別,只能用單引號』 『來包圍,不能用雙引號" 「包圍。而字串只能用雙引號」 "包圍,不能用單引號』 '包圍。輸出字元使用 %c,輸出字串使用 %s。

四、結構體

結構體在進行賦值操作的時候可以採用陣列的形式也可以採用指標的形式,但是二者之間有一定的區別:

以上是採用陣列的方式進行賦值操作,在對字串型別的變數進行賦值時不能直接使用賦值符號「=」來進行賦值,而需要使用字串的複製函式strcpy來進行賦值,因為賦值的時候 name 和 skill 已經是字串型別了,不能使用「=」像對 level hp mp 那樣直接進行賦值操作。

由於以上每次單個變數進行賦值略顯繁瑣,所以可以採用以下的方法稍微簡化一下賦值操作:

使用這種簡便的方式對結構體進行賦值時需要注意,在對某個變數進行賦值時需要時用 「.變數名 = 值」 的方式進行操作。

以上是採用指標的方式對結構體進行動態賦值操作,在進行動態賦值(程式執行時在控制台進行賦值,不是在程式中直接賦值)時需要注意,賦值之前需要使用函式 malloc 給變數動態分配記憶體,在使用完之後還要使用 free(name) 把記憶體釋放掉。

如果使用指標的方式在程式中直接給結構體賦值(不是動態賦值),此時也可以使用"="直接進行賦值,而不需要使用字串複製函式strcpy進行賦值,因為此時 name 是乙個字元型指標變數,不再是乙個字串變數。

C 重要知識點

參考從4行 看右值引用 什麼叫左值,什麼叫右值?可以對表示式取位址的是左值,不能對表示式取位址的是右值。例如 int a 1 這裡a是變數,在棧中為其分配了具體的位址,是左值。1是右值。例如 int a std max 1,3 max方法的返回值是右值,在賦值給a後會被銷毀,因此是右值。什麼是右值引...

c語言重要知識點1

在c語言語言裡面比較重要的知識點有函式 指標 變數 函式 在函式這乙個知識點裡面需要注意的是 1 函式表示式的正確規範的表達形式 void display int num,char p,a,void link int date 等類似的形式 但是其中最主要的有一點需要記住那就是 函式的形參和返回值一...

C語言最重要的知識點(another)

檔案的複習方法 把每章題目做一遍,基本上考試的都會在練習當中。1 字串的strlen 和strcat 和strcmp 和strcpy 的使用方法一定要記住。她們的引數都是位址。其中strcat 和strcmp 有兩個引數。2 strlen和sizeof的區別也是考試的重點。3 define f x ...