指针使用前,都应该有指向
来源:互联网 发布:淘宝虚拟店铺能升级吗 编辑:程序博客网 时间:2024/04/29 07:43
错误出现在这一句:ST->elem = (ElemType*)malloc(sizeof(ElemType));
#include <stdio.h>
#define ERROR -1
#define SUCCEED 0
//#define EQ(a,b) (!strcmp((a),(b)))
typedef int KeyType;
typedef struct
{
char stu_id[15];
char name[20];
char Chinese[5];
char math[5];
char English[5];
}ElemType;
typedef struct
{
ElemType *elem;
int length;
}SSTable;
int Create(SSTable *ST, int n)
{
ST->elem = (ElemType*)malloc(sizeof(ElemType)); //错误点
if (NULL == ST->elem)
{
return ERROR;
}
else
{
return SUCCEED;
}
return 0;
}
int main(void)
{
SSTable *ST;
Create(ST,5);
//printf("%s",ST->elem->stu_id);
printf("HELLO\n");
return 0;
}
#include <stdio.h>
#define ERROR -1
#define SUCCEED 0
//#define EQ(a,b) (!strcmp((a),(b)))
typedef int KeyType;
typedef struct
{
char stu_id[15];
char name[20];
char Chinese[5];
char math[5];
char English[5];
}ElemType;
typedef struct
{
ElemType *elem;
int length;
}SSTable;
int Create(SSTable *ST, int n)
{
ST->elem = (ElemType*)malloc(sizeof(ElemType)); //错误点
if (NULL == ST->elem)
{
return ERROR;
}
else
{
return SUCCEED;
}
return 0;
}
int main(void)
{
SSTable *ST;
Create(ST,5);
//printf("%s",ST->elem->stu_id);
printf("HELLO\n");
return 0;
}
这是我在论坛上看到别人发的一个段错误的求助贴,我随便看了下,也没有发现问题,
但是看得出这段代码写得很规范,//#define EQ(a,b) (!strcmp((a),(b)))这一句
中对宏参数所加的括号,if (NULL == ST->elem)这一句中,将比较的常量放在前面,
都是些值得注意的地方。
主要来看看这段代码为什么出错,SSTable *ST;定义了一个指针,Create(ST,5)
这个出错了,ST->elem = (ElemType*)malloc(sizeof(ElemType));这句是对ST的一个
指针元素开辟空间,我们都知道,在指针使用前,都应该有具体的指向,因为指针仅仅是存放
的是一个地址,这个地址指向哪里,我们才能使用那里,而在使用ST以前,ST是没有指向的。
为什么这个很明显的错误隐藏了,可能是使用了指针嵌套,让我们忽略了外层指针的指向。
牢记:任何指针在使用前,都应该有指向,特别注意指针嵌套时。
- 指针使用前,都应该有指向
- 有5个窍门是每一个嵌入式驱动开发者设计前都应该了解的!
- 所有指针都应该初始化
- 为什么有指向指针的指针?
- 使用指向函数的指针
- 指向指针的指针的使用
- 指向指针的指针 char **使用技巧
- 为什么要使用指向指针的指针
- 指针使用前初始化
- 数组指针、指针数组、指向指针的指针使用总结
- 指向指针的指针变量有什么用
- 设某循环队列的容量为50,如果头指针front=45(指向队头元素的前一位置),尾指针rear=10(指向队尾元素),则该循环队列中共有元素个数为?
- 数据库中的文本如果有标签应该在往网页上显示前先把标签和样式都过滤掉
- 大胆使用指向成员函数的指针
- typedef使用(指向函数的指针)
- 指向函数的指针的使用
- typedef使用大全(指向函数的指针)
- 指向函数的指针定义与使用
- Windows下环境变量设置
- c++封装ping程序类
- 源代码管理的 10 条戒律
- IOS中使用ASIHTTPRequest調用WCF服務
- Running Root.Sh On Second Node Fails PRKN-1008 Unable to load the shared library srvmhas10 解决
- 指针使用前,都应该有指向
- 初学STL之函数适配器。
- Linux 下 i2c switch(选路芯片mux) --- pca9548
- Myeclipse(Tomcat)发布工程出现java.io.EOFException异常的原因和解决方法
- 智能电网势头好 电能表商纷纷扩张产能
- 新的开始
- memcached flush_al的作用
- USB设备枚举(Bus Hound)
- 用Matlab实现字符串分割(split)