一些概念,请真正懂得的大神帮忙解答,网上各种回答太多,各有说法。
1、&a[0][0]为0行0列元素的首地址,a[0]+n为0行第n个元素地址,那么a[0]是表示0行首元素地址吗?&a[0]是零行的首地址,实际上行的地址也只有一个,也无所谓0行的首地址吧?+n相当于元素位移了n个位置吗,所以代表第n个元素地址吗?然后*(a[n]+m)就表示n行第m个元素了?
2、书中写a+n表示第n行的首地址,那是相当于&a[n]吗,a不是表示数组首个元素地址吗,怎么+n不是元素位置改变,却是位移了行?还是a+n表示n行首个元素的地址?为什么
*(a+n)与a[n]是等价的,原理是什么,*(*(a+n)+m)怎么也能表示n行m列元素呢?
1ã&a[0][0]为0è¡0åå ç´ çé¦å°åï¼a[0]+n为0è¡ç¬¬n个å ç´ å°åï¼é£ä¹a[0]æ¯è¡¨ç¤º0è¡é¦å ç´ å°ååï¼
>>æ£ç¡®, a[0]å°±æ¯0è¡é¦å°å.
&a[0]æ¯é¶è¡çé¦å°åï¼å®é ä¸è¡çå°åä¹åªæä¸ä¸ªï¼ä¹æ æè°0è¡çé¦å°åå§ï¼
>>&a[0]å¼ä¸, æ¯åa[0]ç¸åç, ä¸è¿ç±»åä¸ä¸æ ·. a[0]çæäºint *å,å®é ä¸æ¯æåä¸ä¸ªå ç´ . è&a[0]æ¯è¡æé, æåä¸è¡.æ以,a[0]+nå&a[0]+næ¯å®å ¨ä¸åç.
+nç¸å½äºå ç´ ä½ç§»äºn个ä½ç½®åï¼æ以代表第n个å ç´ å°ååï¼
>>+nåå³äºåå§æéçç±»å. å¦ææ¯a[0]+n 移å¨çæ¯n个å ç´ .è&a[0]+nå°±æ¯ç§»å¨nè¡äº.
ç¶å*ï¼a[n]+mï¼å°±è¡¨ç¤ºnè¡ç¬¬m个å ç´ äºï¼
>>è¿å¥æ²¡é. ä»»ä½æ
åµä¸, *(p+n)é½çæäºp[n]
2ã书ä¸åa+n表示第nè¡çé¦å°åï¼é£æ¯ç¸å½äº&a[n]åï¼aä¸æ¯è¡¨ç¤ºæ°ç»é¦ä¸ªå
ç´ å°ååï¼æä¹+nä¸æ¯å
ç´ ä½ç½®æ¹åï¼å´æ¯ä½ç§»äºè¡ï¼
>>è¿ä¸ªä¸é¢è¯´è¿äº, æ ¸å¿å¨äºæéçç±»å. äºç»´æ°ç»int a[M][N]çæ°ç»åa, æ¬è´¨ä¸æ¯å¸¸éçint (*)[N]ç±»å, ä¹å°±æ¯æ°ç»æé. 移å¨çæ¶åæ¯æ´è¡ç§»å¨ç.
è¿æ¯a+n表示nè¡é¦ä¸ªå ç´ çå°åï¼ä¸ºä»ä¹
>>åä¸
*(a+n)ä¸a[n]æ¯çä»·çï¼åçæ¯ä»ä¹ï¼*ï¼*ï¼a+n)+mï¼æä¹ä¹è½è¡¨ç¤ºnè¡måå
ç´ å¢ï¼
>>*(a+n)ä¸a[n]çä»·, è¿ä¸ªæ¯Cè¯è¨çä¸ä¸ªè§å. å ¶æ¬è´¨æ¯, å½ç¼è¯å¨éå°a[n]è¿æ ·çå½¢å¼æ¶, å®é ä¸æ¯ç¿»è¯æ*(a+n)è¿è¡ç¼è¯ç. è¿ç§å¯ä»¥ç¨ä¸ä¸ªå¾å°è§çå½¢å¼æ¥éªè¯.ä½ å®ä¹
int a[4]={1,2,3,4}; ç¶åè¾åº
printf("%d\n", 3[a]);
对, å°±æ¯ææ°ç»åæ¾è¿[], å®é ä¸ä¼è¾åºa[3]
追é®å¦a[m][n]æ°ç»åa, æ¬è´¨ä¸æ¯å¸¸éçint (*)[n]ç±»å, 移å¨æ¯æ´è¡ç§»å¨çãé£ä¹a+1å³ç§»å¨ä¸è¡ï¼ä¸é¢ä¸æép=a,ç¶åp++ï¼å´æ¯é个å
ç´ åæ¢ï¼åæ¯æä¹åäºï¼ï¼é¢ä¸p=a[0]ï¼ä½æ¯æ¹æp=aä¹å¯ä»¥è¿è¡ï¼
{int a[3][5],i,j,*p;
p=a[0];
printf("please input:\n");
for(i=0;i<3;i++)
{for(j=0;j<5;j++)
{scanf("%d",p++);
}}p=a[0];
printf("the array is:\n");
for(i=0;i<3;i++)
{for(j=0;j<5;j++)
{printf("%5d",*p++);
}}}
ä¸ç®¡æ¯ç¨aè¿æ¯a[0]èµå¼ï¼pçç±»åé½æ¯int*ã
èå¨å çæ¶åï¼åªåpçç±»åæå
³ï¼ä¸ä»åªéèµå¼çæ å
³
æ以æ°ç»å并ä¸æ¯æ°ç»é¦ä¸ªå
ç´ çå°åï¼è½ç¶å°åå¼ä¸æ ·ï¼äºç»´æ°ç»åçå«ä¹å®é
æ¯æ°ç»é¦è¡çå°åã
æèªå¦ç书ä¸é½æ²¡æè¿äºç¥è¯ç¹ï¼è¯·é®ææ¨èçèªå¦ä¹¦ç±åï¼
æ以æ°ç»å并ä¸æ¯æ°ç»é¦ä¸ªå
ç´ çå°åï¼è½ç¶å°åå¼ä¸æ ·ï¼äºç»´æ°ç»åçå«ä¹å®é
æ¯æ°ç»é¦è¡çå°åã
-----æ¯è¿æ ·ç
æèªå¦ç书ä¸é½æ²¡æè¿äºç¥è¯ç¹ï¼è¯·é®ææ¨èçèªå¦ä¹¦ç±åï¼
---å
¥é¨ä¹¦ä¸è¬æ²¡è¿äºï¼å®¹æä¹±ï¼æ¾äºè¿é¶çå§ï¼æè
å®æä¸æé«
----åå¤è¯è®º:å¼é½æ¯nè¡é¦å°åï¼ä½ç±»åä¸å
a+n表示第nè¡çé¦å°å,*(a+n)表示nè¡é¦ä¸ªå ç´ å°åï¼