C基礎中的知識點

2021-07-13 06:05:42 字數 4478 閱讀 8280

二進位制與八進位制,十六進製制的轉換

二進位制的3位相當於8進製的1位

二進位制的4位相當於16進製制的1位

getchar() 從鍵盤獲取乙個字元,有返回值,返回獲取的那個字元,沒獲取字元將一直等待

getchar()函式可用作吸收殘留的回車鍵,放在scanf後面

字元加單引號表示ascii碼值

字元常量是用單引號包圍的單個字元 1.普通字元常量 2.轉義字元常量

switch(表示式)

陣列的記憶體空間大小是從定義的時候就分配好的,陣列元素存在於連續的記憶體中,所以在定義陣列的時候,陣列元素的個數必須是個確定的值,即可以是普通常量或符號常量,不能是個變數。

注:不能整體訪問乙個陣列,只能訪問陣列的元素。 1.

陣列名,

表示該陣列的首元素的首位址

2.乙個指向陣列元素的指標,+1

表示它指向下乙個元素的位置.

eg:#include

void main()

;       //a相當於int 型的常量指標,不是變數指標,指標指向陣列首元素的位址

printf("%p,%p\n",a,&a[0]);

int*p=&a[0];

printf("%p,%p\n",p+1,&a[1]);

printf ("%p\n",a+1);}1.

陣列名:a,

表示該陣列首元素的首位址,

作為乙個指標,

指向的物件是這個陣列裡面的的元素,

a+1

表示它的位置偏移乙個它所指物件的長度.

2.&a,

表示對整個陣列這段連續記憶體取位址,

它作為乙個指標的時候,

它所指的物件是整個陣列這塊連續記憶體,&a+1

表示它的位置偏移乙個它所指的物件長度,

到達了陣列尾.3.

p+n=p+n*sizeof(p所指的物件型別)

eg:#include

void main()

;printf("%p,%p\n",a,&a); //取乙個陣列名的位址所產生的是指向陣列的指標,&a的型別則相當於int **,是所謂指向陣列

的指標,*操作符

具有從右向左的結合性,即int **a相當於int *(*a)

printf("%p,%p\n",a+1,&a+1);

}結果為:

0xbfff024c,0xbfff024c

0xbfff0250,0xbfff0260

int*a[5] ;

乙個指標陣列a,

陣列裡的每個元素都是乙個指向int

型資料的指標

int(*p)[5];

乙個指標,

指向陣列5

int

型元素的陣列 // p+1表示移動5個int型位元組

二維陣列可以把它看成是乙個一維陣列,一維陣列裡面每一元素都是單個資料,二維陣列裡面每個元素都是乙個陣列

所以,二維陣列可以看成是以陣列為元素的一維陣列,即陣列的陣列,在儲存的時候是以陣列,按行的方式儲存的。eg:

int a[2][3]=,}; 2行3列,第乙個元素為第一行,第二個元素為第二行。

可以理解為:a[0]=

a[1]=

#include

void  main()

;//

可以把該二維陣列看成是含4

個元素的一維陣列

/*	printf("%p\n",a);//a,

該陣列的首元素的首位址,在該處首元素也就是第一行,在數字1

的位置作為指標,指向的物件是行

printf("%p\n",a+1);//a+1

即跨過乙個該指標指向的物件的長度,到了數字6

的位置

int (*p)[5]=a;

printf("%p,%p\n",p,p+1);

printf("%p\n",*a); //第一行地1列的位址

printf("%p\n",*a+1);  //第1行第2列的位址
printf("%p\n",*(a+1));  //第二行地一列的位址

printf("%p\n",*(a+1)+1);  //第二行第二列的位址
printf("%p\n",&*(a+1));  //指向第二行的指標

printf("%p\n",&*(a+1)+1);//指向地3行的指標
printf("%d\n",*(*(a+1)+1));  //a[1][1]
}

注:二維陣列名,表示指向首行的位址,物件是行,在指向行的指標前面加乙個*

,就轉換為指向列的指標;

在指向列的指標的前面加乙個&

,就成為指向行的指標(

指標要在每一行的首位才行)

字串一般存放在陣列中時,輸入用getchar();輸出直接用%s 加陣列名即可。

strlen();計算字串中字元的個數,並將字元的個數作為這個函式的返回值。在計算字串中字元個數的

時候不計算表示字串結束的'\0'字元。

結構體

1.struct 2.student 3student1 (1.表示結構體標誌 2.表示結構體名 3.表示結構體變數)

可以用乙個結構體變數給另乙個結構體變數整體賦值,不可以對結構體整體操作,只可以操作裡面的成員變數

eg:struct   student student1=;

struct   student student2;
student2=student1;
2. 結構體指標變數:乙個專門用來指向結構體變數的指標

指向乙個結構體變數的指標的值是這個結構體變數的首位址

結構指標變數定義的一般形式:

struct 結構體名  *p

通過結構體指標變數可以訪問結構體成員

一般形式為:結構體指標變數->成員名

3.結構體陣列

struct  student stu[2];

結構體陣列的引用

結構體陣列名[下標號].成員名

eg:stu[0].num=102;

用指標變數的方式給結構體複製

#include

struct student

;

void  main()

for(p=stu;p

}

c 中的知識點

1.類和結構的區別 1.從儲存上,類儲存在堆上的引用,結構是儲存在棧上的值型別 2.從關鍵字上,類使用class,結構使用struct 3.繼承上,類可以繼承,結構不可以繼承 4.類是引用型別,結構是值型別 2ref和out區別 ref無論是按值傳遞還是按照引用傳遞,任何變數都要初始化 out變數不...

C 基礎知識點

1.單行注釋 多用於給變數注釋 2.多行注釋 多用於大段文字注釋 3.文件注釋 多用於給類和方法注釋 只能以字母 或者 符號開頭。開頭暫時不要用,它們有自己特殊的意義 後面可以跟任意的字母數字下劃線 命名法 1 camelclass駝峰命名法 變數名首單詞的首字母小寫,其餘的每個單詞的首字母大寫eg...

C 基礎知識點

主要包含c 常用語句 語言特徵 物件導向程式設計基礎 集合和索引。c 常用語句 物件導向程式設計基礎 高階程式設計 多重介面實現,c 不允許多重類繼承,但c 允許多重介面實現,定義時基類必須在介面之前,如 public class mobile phone,iusb,ibluetooth publi...