求c語言大神!若有定義 double p 4則p是行指標,p佔儲存單元這句話是對的還是錯的

2021-03-30 15:30:46 字數 3428 閱讀 1163

1樓:happy菠菜

錯的, p是指向陣列的指標,估計可以叫行指標。 但是p是指標,在pc上指標是4個位元組,所以p佔一個儲存單元是百分百錯的。

急求c語言,如果不定義行指標(*p)[4],就只能一行一行輸出嗎?

2樓:飄零的狐狸

這樣行不行?

源**  可追問  請採納

#include "stdafx.h"

#include

void search(int i,int *p)}int main(int argc, char* argv);int *p;

p=(int *)a;

search(1,p);

return 0;}

3樓:匿名使用者

//不考慮越界的話

#define c 4

void search(int i, int *p)int a[3][4]=;

則這樣呼叫:

int *p=&a[0][0];

search(0,p);

search(1,p);

search(2,p);

c語言行指標和列指標 10

4樓:劉文正粉絲

&在任何時候

抄都不能定址, 它是用bai來取地址的.

p[i]在任du何時候zhi

都等價dao於*(p+i)

p[i][j] (其中p是int*[x]型別的)在任何時候都等價於*(*(i*x)+j)

x是一個變數.

int a[10][20]

這裡x = 20

int a[20][10]

這裡x = 10

c語言沒有什麼行指標, 列指標.

一維陣列就是一級指標,

二維陣列是特殊的二級指標,

以此類推......

c語言行指標

5樓:黃邦勇帥哥哥

錯解了。p沒有指向a[0][0],因為使用*p不能輸出a[0][0]的值,*p才是指向a[0][0]的,因為**p就是a[0][0]的值,而且*p輸出的是&a[0][0]的地址。p是指向的a[0]也就是說p=&a[0]=a+0;的,也就是指向的二維陣列的第一行。

p++ = &a[1]=a+1; 也就是指向二維陣列中的第二行。

總之,要記住的是a[1]才是指向的二維陣列中第2行第1個元素的地址。

而&a[1]表示的就是二維陣列中第二行的行地址。

同樣,因為a=a+0,表示的是二維陣列中第一行的行地址。因此a+1就是表示的是二維陣列中第二行的行地址。

還要記住:[ ]這個運算子的的運演算法則是,把左側的地址加上[ ]內的偏移量然後再求指標運算,注意有[ ]運算子的地方就有個隱含的指標,比如x[2]表示的就是將指標x偏移2個單位量後再求指標運算。也就說x[2]與*(x+2)是相等的。

6樓:匿名使用者

二維陣列也是用一維來儲存的,第一行先存接著是第二行,

p++時要考慮p的型別,因為int(*p)[4]是個指向陣列的指標,所以p++相當於跳過了4個元素,指向下一行的第一個元素a[1][0];

你可以寫個程式p++以後輸出就能看出來了。

7樓:匿名使用者

p++指向a[1][0].因為p為行指標。

如果int *p=a,那麼p++,指向a[0][1]

c語言中二維陣列的與行指標 20

c語言程式設計求找錯:求二維陣列每行元素的平均值。要求用函式和指標實現)

8樓:匿名使用者

直接用a[i][j]最簡單,注意s必須每次置零。

非要用指標的話,應該用一個指向陣列的指標,而不是一個裝了指標的陣列;

/*求二維陣列每行元素的平均值。(要求用函式和指標實現)*/#include

void fun(int a[3][4])}int main()

9樓:匿名使用者

已改,看註釋

void fun(int a[3][4])

}int main()

c語言,指向二維陣列的指標變數 100

10樓:兆嵐經新榮

int(*p)[4]這個就能當做二維陣列的指標,第二維的長度得是4。

傳遞一維陣列的時候,用的就是指向元素的指標,而不是指向陣列的指標inta[10];

void

f(int

*p);

f(a);

intb[10][10];

void

f2(int

(*p)[10]);

f2(b);

c語言定義一個形參為二維陣列行指標的函式,實現將所指向的陣列所有元素乘以5的功能。

11樓:匿名使用者

/*處理前:

0  1  2  3  4  5

4  5  6  7  8  9

8  9 10 11 12 13

12 13 14 15 16 17

處理後:

0  5 10 15 20 25

20 25 30 35 40 45

40 45 50 55 60 65

60 65 70 75 80 85

press any key to continue*/#include

#include

#define rows 4

#define columns 6

void fun(int **a,int m,int n)void show(int **a,int m,int n)}int main()

12樓:老粽子吉吉

int *a[size1][size2]

int i,j;

for(i=0;i

c語言中,行指標指向**,為什麼(*p)[]方框裡是二維陣列的列不是行,他不是行指標嗎

13樓:

(*p)[x]只是說p是指向一個具有x列的一維陣列的指標,指標的型別(就是這個一維陣列的元素的型別)有待你宣告,x的大小也要你寫明確,否則p就不可用;p確實是行指標,是指向一行一維陣列的,但一個一維陣列的長度不是用列數來表示的嗎?至於p指向了哪一行,那要由**給它賦值了才能知道。比如有int a[3][4],(*p)[4],p=a;,那麼這時p就指向了第一行(第一下標為0的那一行),p+1就指向了第二行(第一下標為1),p+2就指向了第三行(第一下標為2)。

若沒有賦值(沒有寫p=a),那麼p就只是一個能指向列數為4的(即陣列長度為4)int型陣列的指標,它這時還是野指標,沒有具體指向!

在C語言中,若有定義 static int x 32,3,4,5,6,7,則表示式x

答案該是5 我看錯了 2行3列 2 3 4 5 6 7 x 0 就表示 第0行第0列的數 x 1 表示 第1行第0列的數 在c語言中,表示式5 3 2 8 4 0的值為多少?正常思路 由於邏輯運算子優先順序別低於 比較運算子同時這兩種都低於算術運算子,因此先考慮後半部分,4 0真值為1,而8 1的真...

c語言求大神,求C語言大神

在main中,定義了陣列a 下標 0 1 2 3 4 5 6 7 8 值 8 2 9 1 3 6 4 7 5 求f a,9 f a,9 max f a,n 1 a n 1 max f a,8 5 由於不知道哪個大,所以需要求f a,8 f a,8 max f a,7 7 f a,7 max f a,...

C語言問題,求大神,C語言問題,求大神解答!

include int main char str 2000 gets str gets str int i 0 while i 2000 bool bb false for int i 0 i n i if bb printf mmm n return 0 先給你改好的 吧,沒做大手術,按你的思路...