a)一维数组和指针定义
int a[10];
int *p = a;
b)二维数组和指针定义——按C教程说法以下为行指针定义,另有列指针定义法
double a[2][3];
double (*pa)[3];
pa = a;
c)三维数组和指针定义
double a[2][3][4];
double (*pa)[3][4];
pa = a;
补充:在gdb中也可以用c语法(如下图中&(a+1)、 &(a[0])等等)
d)字符串数组char buf [] = "helloworld"; 判断数组结束两种方法 :
char *p,*q;
(1)while (*p++);
(2)p = buf;
q = p+strlen(buf);
while(p++ <= q);
补充:内存初始化函数
void *memset(void *s, int c, size_t n);
补充:gdb中查看内存方法 x/20xb 0xbffff3c8 从0xbffff3c8开始连续20个存储单元
e)指针数组
int a[100]; //定义有100个int类型元素的a数组
int *a[100]; //sizeof(a) = 400,定义一个有100个指针类型元素的a数组,每个元素作为一个int型数据的首地址,或理解为每个元素为一个可指向一个int型数据的指针
char *b[100]; //sizeof(b) = 400,同上,int换为char
f)多级指针
char a;
char *pa = &a;
char **ppa = &pa;
结果: a = *pa = **ppa