2 回答

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