#include <stdio.h>
#include <stdlib.h>
int main(void){
int x[2][3][4]={
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;
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[2][2],*(*(str+2)+2),*(str[2]+2),*(p+8)); // r, 但*(str+8)是錯的
printf("%s %s %s %s\n",str,p,str[0]);// p[0]是錯的
printf("%s %s %s\n",str+2,p+2,str[0]+2); // str+2是指從第三個次陣列開始,p+2和str[0]+2則都從第三個元素開始。
printf("%d %d\n",***x+1,***(x+1));
printf("%s \n%s\n",*(str+1),*str+1);
printf("%p %p %p %p\n",&x[0][0][0],x,*x,**x); //四個都是得出x陣列第一元素的位址。
printf("%p %p\n",&x[1][1][2],*(*(x+1)+1)+2);
return 0;
} |