C語言單元小結 5

2021-08-13 08:28:08 字數 2334 閱讀 8935

int arr[2][3] = , };

陣列名是陣列第乙個元素的首位址,也就是arr == &arr[0]

arr[0]是第二維的陣列名,也就是arr[0] == &arr[0][0]

arr[0][0]是元素

//一重指標和二維陣列匹配

int *p = arr[0];

p++;

//指標陣列、陣列指標和二位陣列匹配

int *p[2] = ; // == p[0] == arr[0]

int (*p1)[3] = arr; // ((p1+i)+j)

void func(int **p)

//定義指標

int a = 23, b = 33;

int **p, *p1;

//繫結

p1 = &a;

p = &p1;

//呼叫函式

func(p);

int *a

a=(int *)0x123 //(int *)把數值0x123強制轉化為位址

*a=***

不能這樣使用非法位址

知識點

struct infor        // struct infor 是識別符號,必須整體使用

; // 分號堅決不能少

struct

//struct data

s; // 這個s是變數名的意思;定義型別的同時給出了結構體的變數名

typedef

struct str5

st, *p_st; // st是struct str5的型別名,p_st是struct str5 *型別的別名

st a;//結構體型別的變數

p_st p;//指向結構體變數的指標

定義乙個型別,不佔空間,宣告該型別的變數時才分配空間。

typedef struct infor s; //重定義型別名

初始化完全初始化

s s1=;

部分初始化

s s2=;

s s3=;

運算子(.)是專用於結構體變數訪問個元素

注意:

s s3 = ;//錯誤:由於第乙個成員是字串型別,所以系統會讀取資料到遇到』\0』賦值給.name成員

結構體指標

struct

st *p;//野指標

struct

st s;

p = &s;

結構體陣列
void set_value_func(struct st arr, int lenth)

}void show_infor_func(struct st arr, int lenth)

}struct st arr[3];

set_value_func(arr, 3);

show_infor_func(arr, 3);

結構體裡.號的實質

&s型別是struct st *

方法一

int *p_a = (int *)&s;

printf(「*p_a = %d.\n」, *p_a);

float *p_b = (float *)((char *)&s+4); // 4位元組

方法二

// 分析:位址值轉化為數字

float *p_b = (float *)((long)&s+4); // overlap

printf(「*p_b = %.2f.\n」, *p_b);

char *p_c = (char *)((char *)&s+8);

printf(「*p_c = %d.\n」, *p_c);

相同結構體變數之間可以互相賦值

srtuct

s1,s;

s1.a=1;

s1.b='a';

s1 = s;

位元組對齊

1、 結構體變數的位址是從4位元組對齊的未知開始(0、4、8、c)

2、各成員在結構體裡自身要對齊;

3、成員之間不滿足自身對齊,得填充(padding)

4、滿足結構體自身對齊的最小倍數

5、預設是4位元組對齊,最大的基本資料型別和這個預設值要相比較,取其小

struct str1      // 7

s1; // 8

struct str2

s2; // 8

struct str3 // 6

s3; // 8

struct str4

s4; //6

C語言單元小結 8

條件編譯ifndef 格式 ifndef head h 一般以檔名大寫和 來當巨集的名字 define head h 所有標頭檔案 endif作用 標頭檔案一般是用來宣告,會被其他的原始檔和標頭檔案include,當被多個檔案include的時候就會造成重複宣告。為了使得只宣告一次,引入了ifnde...

C語言小結

1.include 中關於stidio.h的解釋 一般會把用來 include的檔案的副檔名 叫 h,稱其為標頭檔案 2.scanf的輸入形式 scanf 格式控制,位址表列 位址表列中給出各變數的位址,位址是由位址運算子 後跟變數名組成的 比如 a b分別表示變數a和變數b的位址 3.指標運算子有...

c語言筆試小結

1.void p malloc 100 sizeof p 4 指標的位元組數,而不是指標指向的內容容量 2.void func char str 100 陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標 3.char str 100 sizeof str 100 不是函式的引數時 4.ch...