从stroustrup中删除:声明并初始化字符串数组的指针。 我能做到
char *test1[]={"ddd"}
但不能
char (*test)[] ={"dfsdf"}.
这些声明之间的区别是如何初始化第二个?
答案 0 :(得分:1)
首先是指向char
类型的指针数组
第二个是指向char
类型数组的指针。
这个小 code snippet 应该很好理解差异:
#include<stdio.h>
#include<string.h>
int main()
{
char *test1[]={"ddd","aaa"};
printf("[%s]",test1[0]);
printf("[%s]",test1[1]);
char arr[]={"bbb"};
char (*test2)[] = &arr;
printf("[%s]",*test2);
return 0;
}
输出
[ddd][aaa][bbb]
test1
是一个指针数组,这个数组的每个下标都指向字符串
test1[0]
&amp; test1[1]
允许您获取指向的内容。
test2
是指向另一个数组的指针。取消引用指针*test2
可以指向指向的数组。
答案 1 :(得分:0)
您已使用以下代码创建指针数组:
char *test1[]={"ddd"};
下面的代码是一个指向数组的指针。 "ddd"
隐式是一个字符数组。
char *test1 = "ddd";