1。定義數組變量時必須指定數組元素個數,因為系統會根據元素個數在編譯時一次性分配這么多內存;
而指針變量只需要指定類型,系統只為該指針變量分配4字節(32位機)內存,而不會為該變量所指內容分配內存。
2。指針變量是有存儲空間的;而數組名僅僅是一個標號,沒有實際存儲空間,單單一個數組名就只能表示該數組的第1個元素的地址。int a[10]; 規定&a就等于&a[0]或者a .
3。例如 char str[]= "hello world"和char *p = "hello world"中,數組str是先分配給他元素個數個內存,然后將后面的字符串復制給這個空間(注意,此時應該考慮\0字符);而p的建立過程是先在靜態存儲區建立常字符串"hello world\0",然后將p指向這個常字符串。所以數組str中元素的內容可以通過重新賦值改變,而p指向的內容不能改變。
而指針變量只需要指定類型,系統只為該指針變量分配4字節(32位機)內存,而不會為該變量所指內容分配內存。
2。指針變量是有存儲空間的;而數組名僅僅是一個標號,沒有實際存儲空間,單單一個數組名就只能表示該數組的第1個元素的地址。int a[10]; 規定&a就等于&a[0]或者a .
3。例如 char str[]= "hello world"和char *p = "hello world"中,數組str是先分配給他元素個數個內存,然后將后面的字符串復制給這個空間(注意,此時應該考慮\0字符);而p的建立過程是先在靜態存儲區建立常字符串"hello world\0",然后將p指向這個常字符串。所以數組str中元素的內容可以通過重新賦值改變,而p指向的內容不能改變。