编程中遇到的问题,终于弄明白了:
例程说明如下:
#include <stdio.h>
#include <string.h>
int main(char argv,char *argc[])
{
char *b[10]; //定义一个指针数组
char str="hello world";
strcpy(b[0],str);
printf(b[0]);
system("pause");
return 0;
}
编译时不会出错,但是运行时会出错,你定义char *b[10]时b[10]的每个元素是一个指针,指向字符型的,但是指向的地址是随机的,是不确定的,所以strcpy(b[0],str);b[1]是一个指向字符的地址,这个地址是随机的,可能指向内存的任何地方,可能是不具有写权限的地址,如指令区,资源区等,那么运行会出错,或是影响了你的程序的其它数据,都会导致运行出错,安全的作法b声明为二维数组吧