int*就是指明int數組的地址不是么,聲明的時候用int*var或者int var[2] (注:也可能是其他值),后來賦值用int var[0]=1;int var[1]=1都可以賦值。但是編寫方法的話,兩者作為參數的話..就不通用了..它會報錯告訴你 int* 和 int[2]不是一個類型不能通用,這兩者有什么區別么?為什么不能通用?萬一想在函數參數里聲明一個長度并不確定的數組該咋辦?同時...聲明一個常數不確定的數組除了使用int*之外還有別的方法么?
2 回答

互換的青春
TA貢獻1797條經驗 獲得超6個贊
【int*就是指明int數組的地址不是么】
不是。int * 和 int []是完全不同的概念。
int * a; // 聲明一個指針變量,變量名是a,在32位機器下,指針變量是一個32位數字。該數字具體的值是內存地址。當然,這是指針的一般用法。實際上指針變量就是一個32位數字,他當然可以表示任意一個32位數字,不必一定要是某個變量的內存地址。
int a[20]; // 聲明一個數組,數組名是a,數組可以存20個int變量。根據C語言里面的規定,數組名同時可表示數組的首地址,所以a也可以是一個地址,這個地址就是該數組的首地址,同時也是第一個元素的地址即a[0]的內存地址。a[0]的內存地址,跟a[0]具體等于多少,沒有明面的直接關系。
一般而言:
int a[20]; // 聲明一個數組,并分配空間
int *a; // 聲明一個指針變量,只分配存儲該指針變量的空間,即32位數的空間。
int *a = new int[20]; // 聲明一個指針變量,分配存儲該指針變量的空間,同時聲明并定義一個int數組,分配空間為20 * sizeof(int),并且,將分配的這個空間的內存地址的值,賦值給指針變量a。
- 2 回答
- 0 關注
- 569 瀏覽
添加回答
舉報
0/150
提交
取消