首先char *a [ ]是一个指针数组,理解下面例子有两点基础:
- 数组的名就是数组的地址
- printf()接收到地址会将地址上存的连续的字符串打印出来
#include <stdio.h>
int main()
{
char *a [ ] = {"China","French","America","German"};
printf("数组所在地址:");
printf("%p \n",a);
printf("数组中第一个元素所在,即数组地址:");
printf("%p \n",&a[0]);
printf("数组中元素(指针所指地址):");
printf("%p %p %p %p\n",a[0],a[1],a[2],a[3]);
printf("数组中第一个元素(指针)所指地址:");
printf("%p \n",a[0]);
printf("数组中第一个元素(指针)所指地址中存放的元素(只是字符串的第一个字符):");
printf("%c \n",*a[0]);
printf("数组地址取值(第一个元素,即第一个指针地址)对应的字符串:");
printf("%s \n",*a);
printf("数组地址移位取值(第二个元素,即第二个指针地址)对应的字符串:");
printf("%s \n",*(a+1));
printf("数组第一个元素(指针)所指位置上对应的字符串:");
printf("%s \n",a[0]);
printf("数组第一个元素(指针)所指位置上对应的字符串中第一个字符:");
printf("%c \n",a[0][0]);
printf("数组第二个元素(指针)所指位置上对应的字符串中第二个字符:");
printf("%c \n",a[1][1]);
return 0;
}
结果如下:
数组所在地址:000000000061FE00
数组中第一个元素所在,即数组地址:000000000061FE00
数组中元素(指针所指地址):0000000000404000 0000000000404006 000000000040400D 0000000000404015
数组中第一个元素(指针)所指地址:0000000000404000
数组中第一个元素(指针)所指地址中存放的元素(只是字符串的第一个字符):C
数组地址取值(第一个元素,即第一个指针地址)对应的字符串:China
数组地址移位取值(第二个元素,即第二个指针地址)对应的字符串:French
数组第一个元素(指针)所指位置上对应的字符串:China
数组第一个元素(指针)所指位置上对应的字符串中第一个字符:C
数组第二个元素(指针)所指位置上对应的字符串中第二个字符:r