线性表初始化长度的问题

_MrRobot_ 2017-05-16 11:58:28

typedef struct {
int length;
EleType data[MAXSIZE];
}Sqlist;

Status initList(Sqlist *list){
printf("length=%d", list->length);
}
int main(int argc, char *argv[]) {
Sqlist list;
initList(&list);
return 0;
}

为什么这里打印出来的长度为1
...全文
206 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
starytx 2017-05-16
  • 打赏
  • 举报
回复
未初始化,什么值都有可能
zhuyu_jinxian 2017-05-16
  • 打赏
  • 举报
回复
C语言变量是一种地址,每次运行的时候所取的内存地址都不一样,比如:
#include <stdio.h>
typedef char ElemType;
#define MAXSIZE 10
typedef struct node{
	int length;
	ElemType data[MAXSIZE];
	int test;
}*seqlist;
void initlist(seqlist list){
	int i;
	for (i=0;i<=9;i++)
		printf("length地址=%p\ti地址=%p\tdata[i]地址=%p\ttest地址=%p\n\n",&(list->length),&i,(list->data)+i,&(list->test));
}
void main()
{
	struct node listx;
	seqlist list;
	listx.test=3;
	list=&listx;
	initlist(list);
}
在这里seqlist结构中定义了test变量来测试 当把初始化函数中变量i和for语句去掉后,多次运行程序之后的结果是 length地址=0x7ffc8ed25ff0 i地址=0x7ffc8ed25fdc data[i]地址=0x7ffc8ed2b5ea test地址=0x7ffc8ed26000 length地址=0x7ffde1febb40 i地址=0x7ffde1febb2c data[i]地址=0x7ffde1ff1123 test地址=0x7ffde1febb50 length地址=0x7ffd6d92a070 i地址=0x7ffd6d92a05c data[i]地址=0x7ffd6d92f610 test地址=0x7ffd6d92a080 length地址=0x7ffdf95250a0 i地址=0x7ffdf952508c data[i]地址=0x7ffdf952a5f9 test地址=0x7ffdf95250b0 length地址=0x7ffe69f77ea0 i地址=0x7ffe69f77e8c data[i]地址=0x7ffe69f7d421 test地址=0x7ffe69f77eb0 length地址=0x7fffe3618900 i地址=0x7fffe36188ec data[i]地址=0x7fffe361deee test地址=0x7fffe3618910 length地址=0x7ffd62444040 i地址=0x7ffd6244402c data[i]地址=0x7ffd62449669 test地址=0x7ffd62444050 length地址=0x7ffdf53f4fb0 i地址=0x7ffdf53f4f9c data[i]地址=0x7ffdf53fa57b test地址=0x7ffdf53f4fc0 而添加上去之后结果是 length地址=0x7ffe5f364b70 i地址=0x7ffe5f364b5c data[i]地址=0x7ffe5f364b74 test地址=0x7ffe5f364b80 length地址=0x7ffe5f364b70 i地址=0x7ffe5f364b5c data[i]地址=0x7ffe5f364b75 test地址=0x7ffe5f364b80 length地址=0x7ffe5f364b70 i地址=0x7ffe5f364b5c data[i]地址=0x7ffe5f364b76 test地址=0x7ffe5f364b80 length地址=0x7ffe5f364b70 i地址=0x7ffe5f364b5c data[i]地址=0x7ffe5f364b77 test地址=0x7ffe5f364b80 length地址=0x7ffe5f364b70 i地址=0x7ffe5f364b5c data[i]地址=0x7ffe5f364b78 test地址=0x7ffe5f364b80 length地址=0x7ffe5f364b70 i地址=0x7ffe5f364b5c data[i]地址=0x7ffe5f364b79 test地址=0x7ffe5f364b80 length地址=0x7ffe5f364b70 i地址=0x7ffe5f364b5c data[i]地址=0x7ffe5f364b7a test地址=0x7ffe5f364b80 length地址=0x7ffe5f364b70 i地址=0x7ffe5f364b5c data[i]地址=0x7ffe5f364b7b test地址=0x7ffe5f364b80 length地址=0x7ffe5f364b70 i地址=0x7ffe5f364b5c data[i]地址=0x7ffe5f364b7c test地址=0x7ffe5f364b80 length地址=0x7ffe5f364b70 i地址=0x7ffe5f364b5c data[i]地址=0x7ffe5f364b7d test地址=0x7ffe5f364b80 所以可以知道C语言对于定义的变量,无论是否赋值,系统都会为其提供一个安全的区域来允许它访问
自信男孩 2017-05-16
  • 打赏
  • 举报
回复
这个是一个随机值,因为没有对结构体成员初始化;什么值都是有可能的~

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧