C語言學習筆記(2)——指針(下)

它的第一個參數是置空內存的首地址,第二個參數寫0, 第三個是置空的大小,單位字節(sizeof(a)) memcpy 實現第一個參數是目標地址,第二個是源地址,第三個是copy多少內容,單位字節 注意使用過程中假如待拷貝的數組和目標數組類型不同,short int 和int等。會輸出如下奇怪
的結果
這裏寫圖片描述
這裏寫圖片描述
這裏其實是00020001 00040003。。。000被隱藏起來了。可以用%08x讓它把000輸出 memmove和memcpy用法一樣,使用memcpy的時候,一定要確保內存沒有重疊區域。內存重疊: memcpy(&a[3],&a[0],20);//copy五個成員(注意不是20個)
這裏寫圖片描述

char*作爲函數的參數: void test(char *a) 和之前的數組是一樣的,爲了保護字符串a,需要加const strlen那個庫函數計算字符串的長度 strlen(const char *a),它不要改字符串的值,所以用const strncat合併兩個字符串和strcpy這兩個的參數也有一個爲const,指向的是源字符串 如果一個數組作爲函數的參數,那麼數組的成員數量在函數內部是不可見的,解決辦法: 在傳遞一個數組的時候,同時提供另一個參數,標明這個數組有幾個成員變量。如果傳遞的是個字符串,就不用 傳遞這個參數,因爲字符串是0結尾的。

指針數組作爲main函數的參數

 void print(char *p)//錯誤
 void print(char **p) 
for (i=0;i<3;i++)
 { printf("%s\n",p[i]);//p[i]是char * 
  int main() 
  {char *a[3]; 
  char a1[]="hello:";
  char a3[]="world"; 
  a[1]=a2; 
  a[2]=a3;
  print(a); 
  returan 0; } 

指針數組作爲main函數的參數 int main(int argc ,char *args) //argc是一個指針數組char ,argc代表這個數組有多少個成員 系統調用main函數 argc代表命令行參數的數量,程序名字本身就算一個參數!!!一般args[0]代表函數名,main函數是系統調用的,所以main函數的功能是得到命令行的參數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章