C 二維陣列指標輸出,搞不懂,急!! 20

2024-12-30 02:55:32 字數 3944 閱讀 7208

c++二維陣列指標輸出,搞不懂,急!!

1樓:匿名使用者

輸出的是's'

你定義的是乙個四行四列的陣列。 因為在c++中陣列的行和列都是從0開始的, 所以行的標號是0, 1, 2, 3, 一共四行, 列也是一樣。

str[2][2]輸出的是行列標號均為2的元素, 由以上說明可知, 它實際輸出的是第三行第三列的元素。 根據你陣列的定義, 它輸出的是's'

str[4][4]

標號 實際行數 元素。

0 1 'w' 'e' 'l' '\0'

1 2 'c' 'o' 'm' '\0'

2 3 'e' ' ' 's' '\0'

3 4 'o' 'n' '\0'

標號 0 1 2 3

實際列數 1 2 3 4

標號[2, 2]對應的是's'

只要記住陣列排序是從0開始就行了。

2樓:部鱗水妙美

輸出schar str[4][4] = ;

為定義4行4列的陣列空間。

定義和引用是不同的,引用是以0下標為開始而定義為下標的真正數。

如int a[2];是定義2個空間,a[0]代表第乙個空間 a[1]為第二個空間。

3樓:網友

輸出 s記住是從0開始計數 4個一組。

w', 'e', 'l', '\0',c', 'o', 'm', '\0'

e', ' ', 's', '\0',o', 'n', '\0',『\0』(不足補空)

取第三行 的第3個就是了。

4樓:網友

輸出s,初始化時是按行賦值的,也就是第一行賦值完到第二行到後面的,這個cout語句是輸出第三行的第三列位置的字元是's

5樓:懶人說西方人物

輸出s , char str[4][4] 是4*4的矩陣,2*2表示第三行第三個位置的字元。 就是s 嘍。

c語言問題,用指標為乙個二維陣列賦值

6樓:fzy範忠雲

ptr=arr;

其實你這樣賦值也是可以的,是沒有問題的。

因為arr是二維陣列的陣列名,它636f707962616964757a686964616f31333264626539(arr)本身就代表這個二維陣列的第0行的位址。

問題關鍵不是出現在這裡,而是在你程式的while迴圈語句中i++;

你這樣寫是不對的,首先ptr指向的是乙個位址,所以ptr+i也是乙個位址,所以這裡就不能用變址運算子"&"了。第二個問題是,i 從0自加到6,這裡面其實有了7個數,明顯超過了arr陣列的長度,這樣是不對的。這個迴圈還有乙個問題就是,這本身就是乙個不正常的迴圈(自己想想為什麼)

下面是我幫你改改的**,希望對你會有幫助。

#include

void main()

7樓:網友

i++;這個我不太明白,我也是新手,我也遇到過這種情況,我是這樣做內的:

#include

void main()

希望對你有點容幫助。

8樓:網友

可以強行轉抄。

換,ptr=(double *)arr,不過你這個程式還有個地方有問題:

改成 while(i!=6 &&scanf("%lf", ptr+i))

9樓:樹袋熊劉

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

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

scanf("l%f",a[i][j]);

我也是新手,不知道這樣做對不對。

c++中怎麼通過指向二維陣列的指標給二維陣列賦值

10樓:老馮文庫

一、二維陣列與二級指標。

二維陣列。二維陣列本質上是以陣列作為陣列元素的陣列,即「陣列的陣列」。二維陣列的相當於由若干個一維陣列組成的一級陣列。

int a[3][4];

此時的a是乙個二維陣列,a[0]、a[1]、a[2]均表示乙個一維陣列,它們三個元素共同組成乙個一維陣列a(元素是一維陣列)。也就是說二維陣列a是由若干個一維陣列元素(a[0]、a[1]、a[2])組成的一維陣列。

int a[3][4]=,,}

無論是一維陣列還是二維陣列,陣列名均表示陣列的首位址。

2. 二級指標。

指向指標的指標稱為二級指標,即二級指標不是指向乙個普通變數,而是指向乙個指標。如int **p,*p並不表示乙個變數的值,而是另乙個指標。

二、二級指標指向二維陣列。

int a[3][4];

此時的a即是乙個二級指標,*a指向二維陣列的首位址(也是a[0]的首位址),*a+1)指向a[1]的首位址,*(a+2)指向a[2]的首位址。*(a+0) +1)表示元素a[0][1],*a+i)+j)表示元素a[i][j]。

三、應用舉例。

#include

void main()

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

printf("");}

四、執行測試。

c語言如何定義指標指向字元型二維陣列

11樓:網友

使用指標變數訪問二維陣列的任意乙個元素的方法:

1.使用列指標:定義乙個列指標p,讓它指向二維陣列的第0個元素。

int a[3][4];

int *p;

p=&a[0][0];

因為a[0]是第0行的陣列名,所以p=&a[0][0]相當於p=a[0],因為a[i][j]前面共有i*4+j個元素。

該二維陣列的任意i行j列元素可表示為*(p+i*4+j)。

2.使用行指標:定義乙個行指標p,讓它指向二維陣列的第0行int a[3][4];

int (*p)[4];

p=a; //也可以為p=&a[0];

其中* (p+i)+j)表示任意乙個i行j列的元素。

12樓:天雲一號

在c語言中,可以通過如下方式來定義指向字元型二維陣列的指標:char c[4][5]; // 定義乙個版4行5列的字元權型二維陣列。

char (*pc)[5]; // 定義乙個含5個元素的陣列指標pc=c; // 將陣列指標pc指向二維字元陣列c注:char (*pc)[5] 不能寫為 char *pc[5]char (*pc)[5] 表示陣列指標,陣列中每個元素為char型;

char *pc[5] 表示指標陣列,陣列中每個元素為char*,也即每個元素為指標。

13樓:網友

1、定義二維指標bai

陣列與du定義一維指標陣列差不多,zhi

只是矩陣的維度dao增加了一維而回。

已。2、下面通過具答體的例項來說明如何定義乙個二維陣列:

int *p[2][3]; // 定義乙個二維陣列,只是定義,並沒有分配位址空間。

int i,j; // 陣列的行數和列數。

下面的2個for迴圈是用來對二維指標陣列進行初始化的,也即分配位址。如果不進行初始化操作,就會使指標變為野指標(即指向不明)。

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

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

p[i][j] = (int *)malloc(sizeof(int));

p[0][1] = 2; // 對指標陣列中指標所指向的記憶體單元進行賦值操作。

printf("%d", *p[0][1]);// 輸出結果。

14樓:網友

定義字元型二維陣列:char str[3][10];

定義指標型陣列 : char *p[5] = ;

15樓:過來問問你

如定義:int a[3][4];

int *p; p=a[0];此時p就指向0行0列元素。

c語言 二維陣列指標中的和,C語言 二維陣列指標中的 和

要回答你的這個問題,不妨先根據你的問題先編寫一段小的示例程式 include include using namespace std int a 3 4 int main 這段示例程式在我本地上執行的結果為 a i 0 4214816 a i 4214816 a i 4214816 a i 0 42...

C語言指標與二維陣列求解,c語言中二維陣列的指標如何表示

假設a是乙個二維陣列,則一 a是第乙個一維陣列名,陣列名 就是該陣列的 首位址!二 a 0 和 a都表示這個一維陣列第乙個元素的內容 這句話有問題,應該是 都表示這個 二維陣列 第乙個元素的內容!三 a和a好像不等價啊?關於陣列名和 陣列名書上有明確的介紹與說明 a a a 0 a 0 這是規定!細...

C定義二維陣列,C 定義乙個二維陣列

不是儲存到記憶體中 就是對陣列dham 3 32768 進行初始化 相當於int a 5 前面的const是說你在用到陣列的值時不能改變他的值 如果沒有const就可以改變 比如我定義的a 5 就可以改變它的元素的值 不如 你可以改變a 0 100 但是dham 3 32768 中的值你就不可以改變...