序
希望您能把指針看似天上最燦爛的星星(*)
網盤下載:
微盤
文件格式:Xmind 制作軟件:Xmind Pro
指針的內涵
指針變量用於存儲變量地址。由於我們使用*作用於指針變量,所以作者喜歡把指針當成星星。作者把指針比喻成鑰匙(信箱的鑰匙),而把變量值當成信件。
數組的內涵
數組名稱表示數組第一個元素的地址。
由於數組變量存儲第一個元素的地址,所以數組變量也是一個指針變量。但是不同的是,不能對數組變量進行自增(++)或自減(--)運算,所以我們管數組變量叫做
指針常量。
指針操作符
我們可以使用[]或*取指針指向變量里的值。
指針(*)和數組([])是互通的。
字符串常用操作>
字符串長度:strlen(str1);
字符串復制:strcpy(str1接收者, str2給予者)
strncpy(str1接收者, str2給予者, n復制個數)
字符串連接:strcat(dest被連接者, source連接者)
strncat(dest, source,n)
字符串比較:strcmp(str1, str2)
str1 == str2 地址比較,用於判斷str1和str2是否指向同一個變量。
結構體
通過指針訪問成員使用->或(*).
結構體是派生的數據類型。結構體是由相同或不同數據類型組成的集合體。
常用代碼
定義結構體
typedef struct _student{ char name[10]; int score; } student;
分配內存
student *ptr = (student *) malloc ( sizeof(student) );
文件操作
int main(){ char id[10]; FILE *fptr; if((fptr = fopen("test.dat", "a+")) == NULL){ printf("無法打開test.dat"); return 1; } do{ printf("請輸入id\n"); scanf("%s", id); fprintf(fptr, "%s\n", id); }while(strcmp(id, "-1") != 0); fclose(fptr); return 0; }
書中錯誤
1、書中第一篇第4節(11頁)是這樣描述結構體的(見下圖)。——實際上結構體是相同或不同數據類型組成的。
2、(12頁)是不是我理解上的錯誤,從這句話我誤認為結構體成員在內存中是相鄰的。——但實際上不是。
3、53頁(命令行自變量篇),這個明顯表示不同的意思,怎么就歸納到一起了?
推薦
