首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

指针,该如何处理

2013-11-08 
指针关于指针#includestdio.h#includestdlib.hstruct student {char *nameint score}stu,*pstuint

指针
关于指针

#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");

stu.name可是一个野指针哦,出现这样错误应该是非法内存访问。野指针可能执行了不可以访问的内存区域,造成往该部分区域里写数据出现错误。
在写之前,建议在堆上申请空间。(malloc/realloc/calloc)
[解决办法]
指针使用前要初始化

google 指针初始化
[解决办法]
stu.name需要分配空间,空间的大小必须要>=sizeof("jimy")
[解决办法]
ls的建议都好,但也别忘了malloc之后,记得free一下

热点排行