2 回答

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