C語言中taiaiaj,C語言中taiaiajajt代表什麼意思啊謝謝了

2021-03-03 21:53:16 字數 3654 閱讀 7997

1樓:匿名使用者

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

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

2樓:匿名使用者

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

3樓:匿名使用者

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

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

4樓:

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來表示。

5樓:聽不清啊

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]。

6樓:匿名使用者

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

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

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

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

*(*(a+i)+j)中*(a+i)+j 代表什麼意思? // 為啥最外面還要*求值呢

7樓:匿名使用者

*(a+i)+j代表的是第 i行,j列的那個元素,這個沒有問題吧。

而那個元素是指標。不是值,所以再加*取值。 這和普通的 *p=a;一個意思。

主要原因是陣列裡面放的全部都是指標,你可以看你定義時候的宣告就知道了。

8樓:匿名使用者

給你一個形象的例子,假設有個一維陣列a,

a代表陣列a的首地址,也就是&a對吧,*a為第一個元素的值,*a+1為第二個元素的值,也就是*(a+1);

現在是二維陣列b

*(b+i)其實就是*b+i對吧,表示陣列b的第i行地址,沒有問題吧?*(b+i)+j表示第i行地址又便宜了j個單元,也就是陣列b的第i行第j列元素的地址,這裡沒有問題吧?再加個*號,*(*(b+i)+j)就是第i行第j列元素的值。

記住一點一維陣列要獲取元素的值,必然有1個*號,二維陣列要獲取元素的值,必然有2個*號。

9樓:匿名使用者

這是哪種語言的程式啊?

*(a+i*n+j) = 0;在c語言中這個語句是什麼意思啊

10樓:募思小孩

因為 你給的資訊才少的,所以,我給你的分析是:

a i n j 我的猜測都是整型變數,你應該知道,*p =1就是,就是在p指向的那個地址空間,賦1值。

例如:p指向的那個空間地址為1000h 那麼*p就等價於*(1000h)。

那麼有了上面那個思路後,我們來看下你這個表示式:

*(a+i*n+j)=0,也就是說。在空間地址為(a+i*n+j)的地址空間上賦0值;

當然這個答案是建立在a i n j 都是整型變數的基礎上的。如果你能補充說明下a i n j 變數的型別的話,我可以再給你講下。

不懂可以繼續追問我。

11樓:匿名使用者

1.猜測這條語句中的a是一個指標(int*)或者一個陣列(int ). i,n,j都為一個整形(int)變數,如果不是,可忽略回答.

2.在1成立的條件下此語句可變型為 a[i*n+j]=0; 這句話你應該明白什麼意思了吧;

如果不懂請繼續提問!

12樓:

你定義的那些是啥??表示空

c語言中的二維陣列a[a][j]可以表述為*(*(a+1)+j),但是我看不懂這個東西啊 求解釋啊

13樓:匿名使用者

這個表述是有問題的,*(*(a+1)+j)沒有規定首地址,*(a+1)已經表示a+1地址中的資料了,明顯與陣列概念不合。

a[a][j]裡面陣列名稱和一個維度的陣列的個數表示重疊了,所以我換一種方式來表示:a[y][x]。為了便於理解,假定y=3,x=2。

在陣列中的資料有y行,x列;也就是3行,2列。假定第一行資料為;第二行資料為;第三行的資料為,那麼陣列a在記憶體中的資料為從首地址開始的連續6個資料,。假定首地址為0x01,那麼a[0][0]的地址為0x01,對應資料「1」,該可以表示為((行數 + 0x01)+ 列數),該地址的資料可以表示為*((行數 + 0x01)+ 列數),這個表示形式,和題目中的比較接近。

以此類推,a[0][1]的地址為0x02,對應資料「2」;a[1][1]為第2行第2列,地址為0x04,對應資料0x04。

由此可以看出a[y][x]可以表示為*((x + &a) + y);&a為陣列a的首地址。

不知道這樣講您是否能夠理解。同時「c語言中的二維陣列a[a][j]可以表述為*(*(a+1)+j)」這個題設本身是錯誤的,不要被其誤導。

14樓:才那

不可以寫成a[a][j]

a+i是一個陣列元素的地址,而*(a+i)是取該地址裡的資料,如果*(a+i)中儲存另一個陣列的首地址的話,**(a+i)就能取到另一個陣列裡的第一個資料.

依次類推,取該陣列其他資料*(*(a+i)+j)就能取到第a[i][j]了

最簡單直觀理解為一個陣列中的每個元素又儲存了其他陣列。

15樓:藍青霄

首先糾正一個題裡的小錯誤,二維陣列應該是a[1][j];陣列元素的表示方法(以一維為例)a[i]等價於*(a+i),因為陣列名即為陣列的首地址,(a+i)即為陣列a的第i個元素的地址,*(a+i)就理所當然是a[i]了。再說二維陣列,二維陣列的陣列名可看為一個指標的指標,*(a+1)就表示二維陣列的第二排陣列首地址a[1],然後這個地址加j即為a[1][j]的地址,*(*(a+1)+j)就是二維陣列a[1][j]了

16樓:油菜花零

*(a+1)表示a向下一行的地址,*(a+1)+j表示向下一行後再向右j列,*(*(a+1)+j)表示地址a向下一行後向右j列的記憶體地址的值。相當於a[1][j],不知道你說的a[a][j]是什麼

17樓:匿名使用者

這個是列指標吧

嗯。你就把二維陣列當做指標的指標這樣的話感覺起來就輕鬆多了

C語言中printfn,C語言中printfnn是什麼意思

6d中 是格式符引導符 d表示是整型資料 其中的6表示最小寬度是6個字元 表示靠左對齊。意思 列印輸出內容 input 然後換行。游標移動到下一行。n 轉義字元。換行的意思。數字或字元。成為為一個字元,即轉義字元。c語言中n 1是什麼意思 n 1中的n指的是每工作1年支付1個月工資的經濟補償。所謂的...

c語言中for迴圈怎麼理解C語言中for迴圈怎麼理解?

for迴圈是程式語言中一種開界的迴圈語句,而迴圈語句由迴圈體及迴圈的終止條件兩部分組成,for迴圈一般形式為 for 單次表示式 條件表示式 末尾迴圈體 執行的中間迴圈體可以為一個語句,也可以為多個語句,當中間迴圈體只有一個語句時,其大括號 可以省略,執行完中間迴圈體後接著執行末尾迴圈體 執行末尾迴...

c語言中sizeof啥意義,c語言中SIZEOF啥意義

一 sizeof的概念 sizeof是c語言的一種單目操作符,如c語言的其他操作符 等。它並不是函式。sizeof操作符以位元組形式給出了其運算元的儲存大小。運算元可以是一個表示式或括在括號內的型別名。運算元的儲存大小由運算元的型別決定。二 sizeof的使用方法 1 用於資料型別 sizeof使用...