c語言中為什麼相等xi443i

2021-03-04 09:01:45 字數 3887 閱讀 7187

1樓:宿雨厭厭

xone[i] == xtwo[i / 4][i % 4]; // 一維陣列

copy下標轉變為二維陣列下標

xtwo[i % 4][3- i / 4] = xone[(i % 4) * 4 + 3 - i/4];

//二維陣列下標轉變為一維陣列下標

2樓:

不知你說的啥意思,但那二者肯定不恆相等,除非x中全是同乙個數。

c語言問題 int i,x[3][4]; i=*(*(x+1)+1)是什麼意思,請詳細解釋下。謝

3樓:匿名使用者

x是int *[3][4]型別的變數起始位址x+1是第1維的增加,位址增加的尺寸為int[4],x+1相當於&x[1][0]即第2行起始位址

*(x+1)取得x陣列第2行起始位址*(x+1)+1後面的加1是訪問第2行第2個元素,相當於加第2維下標,即指向x[1][1]

*(*(x+1)+1)等於x[1][1]中存放的資料

4樓:匿名使用者

x 表示: 二級指標,其值與 x[0][0] 的位址值相同x+1 表示: 二級指標,其值與 x[1][0] 的位址值相同*(x+1)表示:

一級指標,其值與 x[1][0] 的位址值相同*(x+1)+1 表示: 一級指標,其值與 x[1][1] 的位址值相同

*(*(x+1)+1) 表示: x[1][1] 的值

5樓:匿名使用者

額額額額,陣列和指標結合,比較難,尤其是二維陣列,

具體啥意思,我得再研究研究,要是初學者的話,可以先忽略這部分,

6樓:心在那天

我們可以把x[3][4]看成乙個行3列4的**,只不過它的序號是從0開始,x就是這個**的首位址即行0列0的位址,所以x+1就是行1的行位址,而*(x+1)則是取行1的值即列的首位址即列0的位址所以*(x+1)+1即行1列1的位址,再對他們取值則是行1列1的值。

c語言中a[4][3]、x[10][4]什麼意思?

7樓:匿名使用者

二維陣列

前面介紹的陣列只有乙個下標,稱為一維陣列, 其陣列元素也稱為單下標變數。在實際問題中有很多量是二維的或多維的, 因此c語言允許構造多維陣列。多維陣列元素有多個下標, 以標識它在陣列中的位置,所以也稱為多下標變數。

本小節只介紹二維陣列,多維陣列可由二維陣列類推而得到。二維陣列型別說明二維陣列型別說明的一般形式是:

型別說明符 陣列名[常量表示式1][常量表示式2]...;

其中常量表示式1表示第一維下標的長度,常量表示式2 表示第二維下標的長度。例如:

int a[3][4]; 說明了乙個三行四列的陣列,陣列名為a,其下標變數的型別為整型。該陣列的下標變數共有3×4個,即: a[0][0],a[0][1],a[0][2],a[0][3]

a[1][0],a[1][1],a[1][2],a[1][3]

a[2][0],a[2][1],a[2][2],a[2][3]

二維陣列在概念上是二維的,即是說其下標在兩個方向上變化, 下標變數在陣列中的位置也處於乙個平面之中, 而不是象一維陣列只是乙個向量。但是,實際的硬體儲存器卻是連續編址的, 也就是說儲存器單元是按一維線性排列的。 如何在一維儲存器中存放二維陣列,可有兩種方式:

一種是按行排列, 即放完一行之後順次放入第二行。另一種是按列排列, 即放完一列之後再順次放入第二列。在c語言中,二維陣列是按行排列的。

在圖4.1中,按行順次存放,先存放a[0]行,再存放a[1]行,最後存放a[2]行。每行中有四個元素也是依次存放。

由於陣列a說明為

int型別,該型別佔兩個位元組的記憶體空間,所以每個元素均佔有兩個 位元組(圖中每一格為一位元組)。

二維陣列元素的表示方法

二維陣列的元素也稱為雙下標變數,其表示的形式為: 陣列名[下標][下標] 其中下標應為整型常量或整型表示式。例如:

a[3][4] 表示a陣列三行四列的元素。下標變數和陣列說明在形式中有些相似,但這兩者具有完全不同的含義。 陣列說明的方括號中給出的是某一維的長度,即可取下標的最大值; 而陣列元素中的下標是該元素在陣列中的位置標識。

前者只能是常量, 後者可以是常量,變數或表示式。

乙個學習小組有5個人,每個人有三門課的考試成績。求全組分科的平均成績和各科總平均成績。

課程 成績姓名 math c dbase

張 80 75 92

王 61 65 71

李 59 63 70

趙 85 87 90

周 76 77 85

可設乙個二維陣列a[5][3]存放五個人三門課的成績。再設乙個一維陣列v[3]存放所求得各分科平均成績,設變數l為全組各科總平均成績。程式設計如下:

void main()

v[i]=s/5;

s=0;

}l=(v[0]+v[1]+v[2])/3;

printf("math:%d\nc languag:%d\ndbase:%d\n",v[0],v[1],v[2]);

printf("total:%d\n",l);

} for(i=0;j<3;i++)

for(j=0;j<5;j++)

v[i]=s/5;

s=0;

}l=(v[0]+v[1]+v[2])/3;

程式中首先用了乙個雙重迴圈。 在內迴圈中依次讀入某一門課程的各個學生的成績,並把這些成績累加起來, 退出內迴圈後再把該累加成績除以5送入v[i]之中,這就是該門課程的平均成績。外迴圈共迴圈三次,分別求出三門課各自的平均成績並存放在v陣列之中。

退出外迴圈之後,把v[0],v[1],v[2]相加除以3即得到各科總平均成績。最後按題意輸出各個成績。

8樓:匿名使用者

如果是在宣告變數時, 則表示a 為二維陣列, 4行5列, x為二維陣列,10行4列

如果是在賦值 時 使用時,則表示下標索引號,a陣列的第5行4列的元素, x陣列的第11行5列的元素。

9樓:兜裡有兩塊糖

a[4][3]、x[10][4]在c語言中是二維陣列的意思,也就是說你定義的是乙個4行3列或者是10行4列的陣列。和矩陣差不多的形式,但是在記憶體中其實也是連續的記憶體位址。

一般初始化如下:

int i,j;

int a[4][3];

for(i=0;i > 4;i++)

}輸出的時候也是這樣。

10樓:江湖三腳貓

二維陣列。

二維陣列你可以想象城乙個m行n列的矩陣(雖然記憶體中是連續排列的),比如a[4][3]可以看做第4行第3列的元素

11樓:匿名使用者

2維陣列 a[4][3] 既可以表示4行3列的矩陣,也可以表示第4行第3列的元素.

12樓:舜衛猶藹

表示陣列的長度!也就是說有10個char型!

int i,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i+

13樓:匿名使用者

首先,a是乙個3*3的二維陣列;

然後我們看下**,稍微調整一下:得到如下的格式:

for(i=0;i<3;i++)

printf("%d",a[2-i][i]);

也就是在for迴圈中,輸出陣列的乙個變數,具體是哪個值呢?我們繼續看;

for迴圈中,i從0開始直到i=2迴圈結束,每次迴圈取的值為陣列中的第(2-i)行,第i列的值。因此,依次取的值為a[2][0], a[1][1], a[0][2]。因此,這段程式輸出的就是乙個次對角線上的資料。

a[2-i][i]表示的是二維陣列中的第(2-i)行,第i列的值。

C語言中ifab是什麼意思啊,在C語言中,ifa1b2是什麼意思?

3步1.if a不為0並且b 不為0 2.無論前面的if是否成立a 1,b 1 3.if決定是否執行望採納 在c語言中,if a 1 b 2 是什麼意思?若a 1並且b 2 執行該步操作後,b的值加1為3 邏輯運算子是根據表示式的值來返回真值或是假值。其實在c語言中沒有所謂的真值和假值,只是認為非0...

c語言中752,為什麼,在C語言中type怎麼使用

表示為取餘,5 10的值為0。中除數與被除數都須為整數。3 2為 1,3 2為1。取餘後的結果與被除數的符號一致。x 5 x 5 5 x 5 5 2 5 3 5 3 在c語言中type怎麼使用 typedef常用抄來自定義型別,比如 typedef int a 那麼你就可以使用a去定義int形的變數...

c語言問題,b11什麼意思,c語言中,為什麼b11最終得出b

b 1是0嗎?且 1是0嗎?c裡面只有0才是假,其他數字都是真。所以這個最後的結果是b 1 1.b 1 你可以去看看c語言的邏輯運算這一節。希望能幫到您 c語言中 為什麼b 1 1 最終得出b 1 是邏輯與運算,邏輯運算子的一種 運算規則是 真 真 真 真 假 假 假 真 假 假 假 假 其中,前面...