它的第一個參數是置空內存的首地址,第二個參數寫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函數的功能是得到命令行的參數