enter 發表於 2015-1-21 23:41:34

多維陣列的指標用法

本帖最後由 enter 於 2015-1-22 17:55 編輯

#include <stdio.h>
int main(void){
int x={
0,10,20,30,40,50,60,70,80,90,100,110,
120,130,140,150,160,170,180,190,200,210,220,230};

char str={"how","old","are","you"};
char *p=&str;

printf("%d \n",*(**x+1) );//10,*愈多就愈往小陣列靠
printf("%d \n",**(*x+1) );//40
printf("%d \n",*(*(*x+1)+0) );//40 請將這種視為+0,才能比較詳細看出內涵
printf("%d \n",***(x+1) );//120
printf("%d\n",   *(*(*(x+1) +1)+2) );//180
printf("%d\n",**(*x+5));//其實這都可以視為一維陣列
printf("%d\n", *(*(*x+2)+2)   );//100

printf("%c %c %c %c %c\n",str,*(*(str+2)+2),*(str+2),*(p+8)); // r, 但*(str+8)是錯的
printf("%s %s %s %s\n",str,p,str);// p是錯的
printf("%s %s %s\n",str+2,p+2,str+2); // str+2是指從第三個次陣列開始,p+2和str+2則都從第三個元素開始。

return 0;
}

enter 發表於 2015-1-22 21:40:48

本帖最後由 enter 於 2015-1-22 22:29 編輯

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char str={"mary","desk","quit","gold"};
char *p;
int num={
1,2,3,4,5,6,7,8,9,10,11,12,
13,14,15,16,17,18,19,20,21,22,23,24};
int *q;
p=str;
q=num; //這裡當成一維陣列的指標變數來想會比較清楚

printf("%c %c %c\n",str,*(*(str+1)+3),*(str+3)); //k,k,k
printf("%s %s\n",str,str+2); //quit
printf("%s %s\n",str+1,*(str+2)+1);//uit
printf("%s %s %s\n",(str+2),*(str+3),str+3);//it,gold,gold
printf("%c %s\n",p,p+14);//要注意,用指標變數p來表示,則它的算法會將次陣列中未有元素的空格也一併計算進來


printf("%d %d %d %d\n",num,*(*(*(num+1)+2)+1),*(*(num+2)+1),*(num+1));//22
printf("%d",q);//9
return 0;
}
頁: [1]
查看完整版本: 多維陣列的指標用法