char* 和 char[]的區別:
主要考慮兩點:
1 內存分配上的區別, 指針不分配指向數據的空間,數組則分配所有元素的內存空間;
2 數組名可以認爲是一種帶有 const 屬性的指針(就是不能修改的指針),比如
char a[6];
strcpy(a, "Hello");
puts(a);
putchar(*a); //輸出 H ,即 a數組的第一個元素
3 意義以及行爲:
char *p="Hello"; //這是定義一個指針,並把在常量區中的一個字符串 "Hello"的首地址賦值給這個指針,所以,是無法修改數據內容的(*p='h'; 錯!),但是你可以修改指針,如p=arr;
char arr[]="Hello"; //定義一個數組,然後把常量區字符串 "Hello"拷貝到這個數組中來,所以,操作和常量"Hello"沒有關聯,你可以賦值:arr[0]='h',OK, 但是不能修改 arr