求助:C语言结构体内指针变量的问题

在学习数据结构,使用 c 语言实现串(string)时,遇到了这么个问题:
  • 定义了个结构体
typedef struct 
{
	char * ch;
	int length;
}String;
  • 然后初始化一下发现
String * S = (String *)malloc(sizeof(String));
if( S->ch )
    printf("NOT NULL");
else
    printf("NULL");
// 发现结果为 NOT NULL
这跟我预想的相反,S->ch,我认为 S->ch 是 NULL,然后却不是,求大佬哥哥们给弟弟解解迷惑🧐
#C++工程师#
全部评论
malloc只是申请了一块内存,可能这块内存里本来就有值,你没初始化这个结构体就去访问成员的行为是未定义的。
2 回复 分享
发布于 2020-01-25 15:29
并没有初始化啊
1 回复 分享
发布于 2020-01-25 17:37
并没有初始化,你这样做是很危险的
1 回复 分享
发布于 2020-01-25 19:42
没有初始化,分配到的内存里面本身不是空的
1 回复 分享
发布于 2020-01-25 20:39
楼上所有人都正解
1 回复 分享
发布于 2020-01-26 09:54
开辟空间后内存里有之前程序使用过留下的数据,程序中开辟的空间如果用于存储口令或者密钥,在内存使用完之后也要清零,内存清零一般用memset_s函数
1 回复 分享
发布于 2020-01-26 11:17
打开vs调试
点赞 回复 分享
发布于 2020-01-25 16:26
亲,C/C++中,在块内部定义的内置类型变量,都会初始化成一个未定义的值。因为你的ch是一个未定义的值,也就是这个指针指向了一个未知的地址(反正不是NULL)。这边建议你在结构体内部,写成char * ch = 0呢,或者=nullptr或者NULL。
点赞 回复 分享
发布于 2020-01-31 23:12

相关推荐

10-11 15:42
皖西学院 Java
青鱼LINK:我硕士,也是java0面试,吾道不孤
点赞 评论 收藏
分享
点赞 2 评论
分享
牛客网
牛客企业服务