C語言ai與ai有什麼區別

2021-03-03 21:53:11 字數 4876 閱讀 1462

1樓:

*a+i

取出指標a的值,然後與變數i求和

*(a+i)

取出指標a向後偏移i個地址的值

2樓:天雨下凡

假設有如下**:

......

int a[5]=;

int i=3;

......

則*a+i的值為a[0]+i=1+3=4

而*(a+i)的值為a[0+i]=a[3]=7

c語言書上說a(i)和*(a+i)等價,我覺得不對啊

3樓:金色潛鳥

注意方括號和小括號。一維二維不要混淆。

c語言 語句中,方括號 不是標點符號,而是 運算子.

c語言 語句中,有恆等式: a[i] = *(a+i)a[i][j] 等於 (a[i])[j] 套恆等式公式,化成 ( *(a+i) )[j], 再化成 * (*(a+i) + j);

類似地 a[j][i] 等於 (a[j])[i],套恆等式公式,化成 ( *(a+j) )[i] ,再化成 * (*(a+j) + i);

求地址 用 & 運算:

1 維:& (a[i]) = & ( *(a+i) ); 注意 &* 抵消, 得 &a[i] = (a+i )

2維; &(a[i][j]) = (*(a+i) + j);

2維; &(a[j][i]) = (*(a+j) + i);

******************************=2 維:

a(i)等價於&a(i)(0) --- 不是小括號,是方括號,用於2 維 下標變數時的 a[i] 等價於 &a[i][0]a[i] 是第 i 行 的 首地址,等價於 &a[i][0]

4樓:運命に抗

書上是對的,你的理解完全錯了。

a[i]並不等價於&a[i][0]。

&a[0]等價於a;

&a[i]等價於a+i

同時取值

*(&a[i])等價於*(a+1);

其中*(&a[i])的*&抵消就是你書上說的 a[i]等價於*(a+1);

c語言中*(a+i)與a[i]是等價的。那麼*(a+i)是值還是地址?

5樓:匿名使用者

*(a+i)就是值了

*(*(a+i)+j)才和a[i][j]等價

c語言中a+i是地址嗎,書上說a+i是a[i]的指標,既然這樣,那麼*(a+i)為什麼還是

6樓:

a+i其實就是&a[i],肯定是地址

*(a+i)其實就是a[i],如果a是二給陣列的陣列名,a[i]就肯定是地址(等同於&a[i][0]),如果a只是一維陣列(指標陣列除外)的陣列名,a[i]就不是地址(原因是:二維陣列可以看作是多個一維陣列組成,即陣列的陣列)

*(a+i)+j就是&a[i][j],如果陣列a是二維陣列那就肯定也是地址啦

a[i][j]則是表示為*(*(a+i)+j)

7樓:匿名使用者

a應該是指的陣列名字吧

你首先應該知道陣列名字本身就是地址了

a+i是說a的地址向後在移動i個位置

也就是a[i]

a是指的陣列的首地址,開頭的位置

*(a+i) 也就是*a[i] 也就是a[i]的地址,只是這個地址離首地址偏移了i位置

再加上j 就是 a[i][j]地址

*(a+i)+j是針對二維陣列來說的,也可以說是特殊的一維陣列。

8樓:賽罡諫陽澤

是地址,你要取值是要*(

*(a+i)+j)的

*(a+i)其實就是a[i][0]的地址

c語言中{t=*(a+i); *(a+i)=*(a+j); *(a+j)=t;}代表什麼意思啊 謝謝了

9樓:匿名使用者

a是一個指標,a+i表示a所指位置的下i個記憶體區,a+j同理。這個程式的功能是: 交換 a+i 和 a+j 所指記憶體內區的內容,

容t是中間變數。 就好像你要交換兩瓶飲料,一瓶汽水,一瓶果汁,交換它們,要找一個空瓶子,這裡,t就是空瓶子 a+i 和 a+j 就是你要交換的兩瓶飲料,一共要倒三次,你懂了吧!

10樓:匿名使用者

交換資料。交換(a+i)所指的元素和(a+j)所指的元素的值,用的是「水桶演算法」。

11樓:匿名使用者

通過中間變數t,交換變數i和j 的值

c語言問題。 *p+i與*(p+i)有什麼區別啊?

12樓:匿名使用者

寫個c程式解釋吧。

#include

int main()

, *p = a;

printf("%d %d\n", *p + 1, *(p + 3));

return 0;

}輸出為 10 6;

為什麼呢?因為 *p = a 把 a 陣列的首地址的值放在 p 處,所以p = a,*p =a[0]= 9 => *p + 1 = 9 + 1 = 10.

p + 3 就是a陣列的首地址往後移動3位,即p = a[0], p + 3 = a[3]的值,就是6了。

13樓:匿名使用者

其實在定義時你這樣理解就很清楚答案了:

char *p;理解成char (*p);*p在一起是一個char。那麼,*p+i就是*p的值加上i,而*(p+i)是在先p+i再*操作,*是什麼意思呢,在這裡是「取值」。所以,*(p+i)是把指標移動i個位置,再返回前地址的值。

14樓:匿名使用者

地址加i,地址變了。地址

c語言'a'和"a"有什麼區別

15樓:偷個貓

1、本質區別

雙引抄號襲

裡面的是字串, 而單引號裡面的代表字元。

2、輸出區別

str = 「a」輸出的就是a這個字母;

str = 『a』輸出的測試65

3、底層區別

用單引號引起的一個字元實際上代表一個整數,整數值對應於該字元在編譯器採用的字符集中的序列值。

16樓:匿名使用者

1 用''對包bai含的du

代表字元常量,其zhi值為字元a的ascii碼。

2 用""對包含的代表字dao

符串常量,版其有兩個元素,第一個是a,第二權個是結束符'\0'。

於是二者區別可以總結為:

1 型別不同,字元和字串。

2 佔用空間不同,前一個是一個位元組,後一個是兩個位元組。

17樓:匿名使用者

an和a的區別,用法區別

18樓:王若懷

在現有的c語言用法習慣中,'a'的意義是字元型常量a,而"a"的意義是字

符串常量a,預設專後面還

有個屬'\0'作為字串的結束符,此常量佔倆個字元空間,兩者的區別就在於資料型別不同,前者是字元常量(char),在計算機記憶體中佔用一個字元空間,後者是字串常量(string),在計算機記憶體中佔用倆個字元空間。

備註:在計算機中對於字串型資料的儲存是用字元陣列來實現的,所以上面的後者雖然本身作為字串常量,但是在計算機記憶體中佔用的是字元空間。

19樓:匿名使用者

一個'a『是字元,只佔一個字元的記憶體空間,"a"是字串,後面還有'\0'佔兩個字元的空間。

20樓:哥們兒會_臭臭

'a'是一個字元

"a"是個字串,後面還跟著一個'\0'

21樓:倒黴熊

前者是一個字元,後者是一個字串。

char a='a';

char a="a";

22樓:匿名使用者

'a'是一個字元,佔一個位元組,"a"是字串,包含了一個隱含的'\0',佔兩個位元組。

為什麼c語言中*(a+i)+j能表示a[i][j]的地址

23樓:

int a[3][4]; //假設定義一個3行4列的二維陣列,所謂二維陣列就是陣列的陣列

a[0]、a[1]、a[2]是陣列a的元素,而這個元素是陣列,而不是我們通常認為的基本資料型別的資料

所以*(a+i)就是獲取陣列a中第i個元素,等價於a[i],而a[i]本身又是一個包含有4個int型數值的陣列,a[i]是這個一維陣列的陣列名,我們知道陣列名的本質是一個地址,是陣列首元素地址,所以

*(a+i)+j就是表示下表第i行的第j個元素的地址了。所以,

*(a+i)+j表示的含義是元素a[i][j]的地址,也可以用a[i]+j來表示。

24樓:聽不清啊

int a[2][3]=;

printf("%d ",*(*(a+1)+2));

以上的引用能夠輸出60

因為a是二維陣列名,所以它是指向指標的指標(二級指標)。

*(a+1)就是a[1],它是一個一維陣列,也是一維陣列的首地址(指向一維陣列首元素的指標)。*(a+1)+2就是a[1][2]的地址,*(*(a+1)+2)就是a[1][2]。

25樓:匿名使用者

*(a+0)取出a[0]的值

a[0]的元素又是一個一維陣列

因此*(a+0)取出的就是這個一維元素的首地址那麼*(a+0)+0表示: 一維陣列a[n]中, a+0陣列元素a[0]的地址

*(a+0)+1表示一維陣列的1號陣列元素的地址

低AI和高AI有什麼區別,PS與AI有什麼區別?

對於騎砍ai使用遠端 拋 射之精準表示敬畏,跑位還是會的,射一下往旁邊移一下。就是不會找掩體。不過總的來說,騎砍ai很是低的可以 ps與ai有什麼區別?ai是向量圖形軟體放大縮小不受限制 ps是以畫素點陣的影象軟體 放大縮小受畫素多少控制 ai色彩純但不豐富 影象簡單沒有多的層次 ps色彩還原極佳 ...

尼康AUTO卡口和AI卡口有什麼區別

auto卡口bai和ai口最大的區別就du是在於鏡頭卡口邊鏡身末端zhi的凹槽 dao。auto卡口是平回 的,而ai口是有凹槽的,這個答會告訴機器最大光圈和當前光圈。在現代的nikon數碼相機裡,不改口直接可以用auto鏡頭的只有d40 d40x d60 d3000 d5000,別的機器如果直接使...

表示物質狀態的ai與aq化學中什麼區別

ai指的是電離物質水溶液,aq指的是水溶液,兩者的區別在於物質在水中存在的狀態是否電離。比如nacl水溶液,既是ai也是aq。ao 原子軌道 atomic orbital 應該是電化學方程式中的物質角標,也就是物質的狀態,化學中沒有ai,我想應該是al,一個大寫,一個小寫,是鋁的 cr是鉻,化學元素...