(1)int *a[10]; (指针数组:里面存放指针的数组)定义一个数组a,由10个元素组成, 每个元素都是int *指针。
a[0] 、a[1]等里面存放的都是指针即地址,*a[0] *a[1] 里面存放的是int型的数值。
(2)char *str[10]; 数组str,由10个元素组成, 每个元素都是char *指针。
srt[0] str[1] 里面存放的是指针即地址
测试用例:
#include <stdio.h>
#include <string.h>
int main(void)
{
int *a[3];
char *str[2];
int i = 1, j = 2, k = 3;
char s1[] = "hello";
char s2[] = "world";
a[0] = &i; //注意这里不能写成*a[0] = i; *a[1] = j;*a[2] = k;因为int *a[3] 只是定义了指针数组,a[0]里面并没有存放地址,否则运行是会出现segment fault;
a[1] = &j;
a[2] = &k;
str[0] = s1;
str[1] = s2;
printf("address:\n");
printf("a[0]:%08x\na[1]:%08x\na[2]:%08x\n",(unsigned int)a[0],
(unsigned int)a[1],(unsigned int)a[2]);
printf("str[0]:%08x\nstr[1]:%08x\n",(unsigned int)str[0],
(unsigned int)str[1]);
printf("value:\n");
printf("*a[0]:%d\n*a[1]:%d\n*a[2]:%d\n",*a[0],*a[1],*a[2]);
printf("*str[0]:%s\n*str[1]:%s\n",str[0],str[1]);
return 0;
}
xiaolu@ubuntu:~/ccode$ gcc -g aa.c -o aa.o
xiaolu@ubuntu:~/ccode$ ./aa.o
address:
a[0]:bfe9bc9c
a[1]:bfe9bc98
a[2]:bfe9bc94
str[0]:bfe9bc8e
str[1]:bfe9bc88
value:
*a[0]:1
*a[1]:2
*a[2]:3
*str[0]:hello
*str[1]:world