1樓:匿名使用者
(*prt)[3]=a指的是(*prt)+3的這塊指標指向2維陣列a的首地址,prt應該是個2維指標。
*p=a[0]指的是大小為3的第二維陣列的首地址。
如果不對指標做加法運算的話,不用計較它真正指向幾維陣列,他們指向的都是a、a[0]、a[0][0]的地址。
2樓:匿名使用者
嗯 為陣列下
標是從0開始的,所以不可能出現4 最後是a[3][2]1 2 3
4 5 6
7 8 9
10 11 12
對應的陣列下標:
a[0][0] a[0][1] a[0][2]a[1][0] a[1][1] a[1][2]a[2][0] a[2][1] a[2][2]a[3][0] a[3][1] a[3][2]
3樓:匿名使用者
(*prt)[3]=a,指向陣列a,a[0][0],a[0][1],a[0][2]....,a[3][2],指標確實很麻煩..
*p=a[0] ;p指向a[0][0],a[0][1],a[0][2]
驗證程式如下:
#include
void main()
, (*prt)[3]=a, *p=a[0] ;
int i;
printf("%d\n",*p);
//printf("%d\n",*prt);這樣寫是錯誤的,因為prt是指向一個含3個元素的陣列的
//*prt的值是a[0]陣列的首地址,&a[0][0],才指向a[0][0];
printf("%d\n",**prt);
for (i=0;i<3;i++)
printf("%d ",*(*prt+i));
printf("%d\n",**(prt+3));}
4樓:匿名使用者
a[0][0], a[0][1], a[0][2], a[0][3]
5樓:匿名使用者
a[0]指的是a[0][0]也就是1
已知:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12},c語言問題
6樓:匿名使用者
int (*ptr)[3]=a這句,
bai將a的首地du址賦值給了ptr,ptr表示的是zhi指向一個含有三個int的數dao組的指標,*((ptr+1)[2])等價於*((ptr+1)+2),等回價於*(ptr+3),這表示從答
陣列a的首地址向後移動3個單位,每個單位為一個含有3個int的陣列,所以一共向後移動了9個單位,即得出執行結果10!
要想正確表達a[1][2],應該是(*(ptr+1))[2],陣列的運算子[ ]比間值運算子*的優先順序高,(*(ptr+1))[2]表示a向後移動一個單位即三個int,此時ptr指向4,再往後移動2個int指向6。
其實遇到這類問題畫記憶體結構圖比較容易理解了
7樓:匿名使用者
(*ptr)[3]=a,陣列
指標只有3行,陣列a有四行,所以(*ptr)[0]=,(*ptr)[1]=,(*ptr)[2]=,所以*((ptr+1)[2])表示的是(*ptr)[2]裡面的回
第二個元素就是答10
8樓:匿名使用者
*((ptr+1)[2])這種用法是不對的,陣列的下標相當與解引用,比如a[2]=*(a+2)
因此,上面的替換做法是(*(ptr+1))[2].
9樓:巫馬尓絲
*((ptr+1)[2])和copy*(*((ptr+1)+2))是等價的,而第二個算式可以演化成*(*(ptr+1+2)),也就是*(*(ptr+3))。
你既然會用指標表示陣列,那麼我用一維陣列給你舉個例子:
int arr[3];
這裡如果要表示陣列的第二個元素,有2種方式 arr[1], *(arr+1),
就是說arr[1] == *(arr+1)
那麼你*((ptr+1)[2])我們只看括號內的內容(ptr+1)[2] ,它按照上邊的等式轉化一下就是*((ptr+1)+2),去掉裡面的括號*(ptr+1+2),也就是*(ptr+3);
*((ptr+1)[2]) == *(*(ptr+3)) == a[3][0]
很好的解釋了為什麼你寫的第一個表示式是10了,
你如果要用ptr表示a[1][2]就應該是*(*(ptr+1)+2)或者*(ptr+1)[2]這樣寫才對。
c語言的問題 int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[4]; p = a;
10樓:匿名使用者
因為p[0]和p[1]分別指向4個整數
如果你是需要將p[1]指向的4個整型資料一次性賦值給p[0]指向的4個單元,那麼c語言沒有這麼簡單的賦值,只好編個程式一個一個地賦值;
如果你是需要把p[0]指向p[1],那麼你可以寫:p[0]=&p[1];
11樓:
我試了,p[0]為不可修改的左值。
只知道這個語句本身是有問題的,p[1]是依賴p[0]的。p[0]怎麼可能由p[1]賦值呢?
或許彙編的角度更有說服力。期待正解!
池上後兩句的詩意是什麼寫出池上後兩句詩意
池上後兩句的詩意是 他不知道怎麼掩藏蹤跡,水面的浮萍上留下了一條船兒劃過的痕跡。原文 池上 唐 白居易 小娃撐小艇,偷採白蓮回。不解藏蹤跡,浮萍一道開。註釋1.小娃 男孩兒或女孩兒。艇 船。2.白蓮 白色的蓮花。3.蹤跡 指被小艇劃開的浮萍。4.浮萍 水生植物,橢圓形葉子浮在水面,葉下面有鬚根,夏季...
觀書有感後兩句是什麼意思,《觀書有感》後兩句什麼意思?
註釋 這首詩富於啟發而有歷久常新。半畝大的池塘像明鏡一樣,映照著來回閃動的天光雲影。要問這池塘怎麼這樣清澈?原來有活水不斷從源頭流來啊!詩的寓意很深,以源頭活水比喻學習,要不斷吸取新知識,才能有日新月異的進步。原詩四句 半畝方塘一鑑開,天光雲影共徘徊 問渠哪得清如許?為有源頭活水來。它實寫的是明麗清...
山行最後兩句是什麼意思,山行這首詩後兩句是什麼意思
停下車來,是因為喜愛這深秋的楓林晚景。楓葉秋霜染過,豔比二月春花。全文意思 沿著彎彎曲曲的小路上山,在那白雲深處,居然還有人家。停下車來,是因為喜愛這深秋的楓林晚景。楓葉秋霜染過,豔比二月春花。全詩通過楓葉,寫出了晚秋的熱烈氣氛。山行 最後兩句是什麼意思?山行這首詩後兩句是什麼意思?山行 的後兩句詩...