指针
关于指针
#include<stdio.h>
#include<stdlib.h>
struct student 
{
char *name;
int score;
}stu,*pstu;
int main()
{
strcpy(stu.name, "Jimy");
stu.score=99;
system("pause");
return 0;
}
我在运行上述程序时,老是出错,不知道是什么原因,麻烦大家帮忙看下。
[解决办法]
name 是指针, 没有分配内存空间
stu.name = (char *)malloc(20);
[解决办法]
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。
[解决办法]
错误的大意是说 引用了0x00000000的内存,该内存不能写。因此你strcpy时会错
原因是stu是个全局变量,因此编译器会对他初始化,name会初始化为NULL。因此出现了上面的情况
如果是局部变量,那就不一定是NULL了。如果引用的内存恰好是可写的,那就严重了!!
所以,指针变量一定要记得初始化!!!
解决这个问题的话,给name分配一块有效的内存
[解决办法]
stu test;
test.name = (char *)malloc(20);
strcpy(test.name, "Jimy");
test.score=99;
strcpy(stu.name, "Jimy");