昨天遇到一个指针赋值问题,一开始看代码好像没有错误,而且编译也通过了,运行确错误了,这不很奇怪吗?比如下面这个例子:
#include <stdio.h>
int main(void)
{
int j;
char *ch1[4] = {"hello", "hi", "ok", "yes"};
char *ch2[4] = {"HELLO", "HI", "OK", "YES"};
char **p1;
*p1 = ch1[1];
printf("%s\n", *p1);
return 0;
}
这个例子够简单吧。
初略分析下:
p1是一个指针,该指针的类型是char **,该指针指向的类型是char *;
*p1也是一个指针,该指针的类型是char *,该指针指向的类型是char。
而ch1是一个4元数组,该数组中存放的是指向char类型的指针。
若把ch1当做指针来看&#x