《指針的藝術》讀書筆記


 
 

 
希望您能把指針看似天上最燦爛的星星(*)
 

網盤下載: 微盤
文件格式: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頁(命令行自變量篇),這個明顯表示不同的意思,怎么就歸納到一起了?

 

 
 
推薦
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM