c語言問題 int a 210,20,30,40,50,60p p a則p 2 1 的值為多少

2021-03-23 05:21:00 字數 4181 閱讀 6608

1樓:匿名使用者

結果60

指標p指向的是0號行,也就是a[0]

*(p+2)==a[2]

*(*(p+2)+1)==a[2][1]

2樓:

*(*(p+2)+1)對應陣列元素a[2][1],因此值為:60。

3樓:神經編劇

我也看不懂,誰來講講啊?

c語言的問題 int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[4]; p = a;

4樓:匿名使用者

因為p[0]和p[1]分別指向4個整數

如果你是需要將p[1]指向的4個整型資料一次性賦值給p[0]指向的4個單元,那麼c語言沒有這麼簡單的賦值,只好編個程式一個一個地賦值;

如果你是需要把p[0]指向p[1],那麼你可以寫:p[0]=&p[1];

5樓:

我試了,p[0]為不可修改的左值。

只知道這個語句本身是有問題的,p[1]是依賴p[0]的。p[0]怎麼可能由p[1]賦值呢?

或許彙編的角度更有說服力。期待正解!

c語言問題

6樓:匿名使用者

1.當然是9了。因為a[0]~a[9],最大也就到9了2.

陣列名字。int a[10].那麼a就是首地址了3.

因為*p,所以p是指標,p=a,意思是p的地址等於a的地址,也就是二維陣列的首地址,又因為(*p)[2]; 所以其實p是陣列指標,(*p)[0]指向第一行,

(*p)[1]指向第二行。

這裡*(p+2)之後,指向了第一行的第三個數,就是30,又因為後面還有一個+1,就是指向第二行了,很明顯30對應的第二行就是60.

10 20 30

40 50 60

7樓:匿名使用者

1、92、陣列名

3、60

8樓:匿名使用者

1、最大的下標為9。

2、a代表它的首地址。

3、值為60。

9樓:黃邦勇帥哥哥

第1題:9

第2題:陣列名

10樓:夏日銀杏樹下

1. 9

2. 陣列名 a

3. 60

11樓:匿名使用者

1。 若有以下陣列a,元素a[0]~a[9]其值分別為9 4 12 8 2 10 7 5 1 3,該陣列可用最大下標值為(9)

2. 陣列在記憶體中佔一段儲存區,由(a)代表他的首地址3. 設有以下定義語句:

int a[3][2]=,(*p)[2]; p=a;則*(*(p+2)+1)值為(60)

12樓:匿名使用者

1. 9

2. a

3. 60

c語言,如下**: int main (void) { int a[] = {10, 20, 30, 40, 50};

13樓:匿名使用者

詳解如下:

1、使用上了 &a 相當於將 a陣列二維化,類似於擴充套件成了

int b[1][5] = ;

2、&a + 1 類似於 b + 1

b + 1 加的是5個元素, &a + 1 也是5個元素

此時指標指向的是 b[1][0] 的地址,也即 a[5] 的地址

3、將二維陣列再次轉換回一維陣列 (int*)(&a + 1),但是此時他的地址是 a[5]的地址;

4、(int*)(&a + 1) - 1,表示的是a[5]的地址-1,所以是a[4]的地址;

5、*((int*)(&a + 1) - 1),相當於取 a[4]的地址裡的值,即 a[4] = 50

所以答案是50;

這類問題一般涉及的c語言的深度比較深,我是ndk吧的吧主,在平時學習c語言的

c語言,int a[]={10,20,30},*p=&a;當執行p++後,p向高地址移了幾個位元組?為什麼?

14樓:匿名使用者

錯誤,指標型別不符。 p的型別是int *,&a的型別是int (*)[3]。 考慮改為:

int a=,(*p)[3]=&a; 的話,p++後,p向高位移動了sizeof(int)*3個位元組,在16位編譯器裡是6個位元組,32位裡是12個位元組。 或者改為: int a=,*p=&a[0]; 則p++後,p向高位移動了sizeof(int)個位元組,在16位編譯器裡是2個位元組,32位裡是4個位元組。

struct s{int a; int *b;} *p; int c[ ]={10,20,30,40}; struct s d[ ]={50,c,60,c+1,70,c+2,80,c+3};

15樓:對飲悲歌

#include

struct s *p;

int c[ ]=;

struct s d[ ]=;

void main()

//答案為61,原因自

個推樓上回答有誤

16樓:匿名使用者

++p->a==61(先求p->a==60,再自加,得61)

(++p)->a=60 ((++p)->a==60)

++(*p->b)=11 (先求*p->b==10,再自加得11)

17樓:小0__小

你想知道啥子東西????學c語言表達能力很重要~~程式設計只佔一部分~~表述清楚再來吧!!!帥鍋~~

c語言問題int a[2][3],*p[3]之後為什麼p[0]=&a[1][2]是正確的啊

18樓:匿名使用者

int *p[3] 的意思是p中的每一個元素存放的是一個整形變數的地址

所以給p中的元素賦值要取某一個整形變數的地址所以p[0]= &a[1][2]是正確的...意思是把a[1][2]這個變數的地址賦給p[0]

19樓:璐人釔

int a[2][3]就是一個陣列,所以a[1][2]就是一個int整數,所以&a[1][2]就是一個int整數的地址

int *p[3]也是一個陣列,不過型別是int*,也就是一個int整數的地址,p[0]就是第一個元素而已

20樓:

意思正確,寫法上錯誤才正確。不知你問的什麼意思。

c語言的問題:int d[3][]={{1},{1,2,3},{1}};

21樓:匿名使用者

我用的平臺是turboc2.0。

38.程式不完整,不知道你是什麼意思.

39.二維陣列初始化的時候只能省略第一維的長度。

40.按照你的程式,修正語法錯誤後輸出0600,符合預期.

int a[4][4]=,,}是對4 x 4陣列賦值,a[i][j]是陣列中第i+1行,第j+1列對應的元素,比如a[0][3]對應著第1行第4列的元素(此例中是0)。

41.程式不完整,不知道你是什麼意思.

42.s1是陣列的首地址,不能直接給s1賦值,應該定義時候就給賦值,或者用個指標給他賦值:

char *p=s1;

p="ctest";

43.沒看懂你是什麼意思,amovep函式的定義中n根本就沒用。

22樓:匿名使用者

你問太多了

問點典型的就行了

好好看一下陣列

23樓:匿名使用者

多看看書吧!

特別是資料型別和陣列.

c語言中 int a【3】【3】,(*p)【3】;p=a【0】; ??*(p+1)[2]指的是什麼

24樓:閎曉靈幹默

p=a[0]:p指向二維陣列a的第0行的行首元素的地址,也就是a[0][0]所對應的地址

*(p+1)[2],也就是第一行的第2個元素的值,也就是a[1][2]

大學c語言問題 int a 0,b 1,c 1,d 3 表示式 bca的值

都是比 優先順序高的運算子,所以先算 b就是2 c就是0 a就是 1 然後算 2 0 1 0 1 1 兩邊只要有一個不為0,結果則為1 望採納 假設int a 0,b 1,c 1,d 3 表示式a b c d是多少 值為0。a b 0 c d 2 0 2 0 作邏輯運算時,c語言是可以這樣用的 非0...

C語言的問題C語言問題C語言問題

若有說明語句double p,a 則能通過scanf語句正確給輸入項讀入資料的程式段是 解 p a 將a的地址賦值給p,scanf lf p 從鍵盤獲取一個數值賦值給地址p指向的變數 所以選d 有函式fun的定義形式如下。int fun float f 則以下對函式fun的呼叫語句中,不正確的是 a...

簡單的c語言問題,int a 13,表示式a《2等於多少具體怎麼算的

我以前也沒怎麼搞明白,順便自己研究了下,大家共同進步哈!int佔4位元組的情況計算出得結果是一樣的 1.方法 先轉換成對應的2進位制 int型在計算機中是4位元組,這裡以2位元組位例,具體佔自己數看計算機 2.具體步驟 00000000 00001101 13對應的2進位制 11111111 111...