过年的大脑已经瓦特了。
#包含
#define N 10
#define MAXSIZE 100
类型定义结构{
int r[MAXSIZE 1]; /*用于存储要排序的数组*
int length; /*用于记录顺序表的长度*/
} SqList;
输入主(语音) {
SqList sq;
sq.length=N;
printf('%d ',sq.length );
返回0;
}
编译上面的程序时,我注意到发生了内存泄漏。 我一时想不起来问题出在哪里。 调试几次后,由于没有初始化结构内的数组,注意到发生了“野指针”。
使用结构指针变量时,在定义结构指针变量后,容易出现直接操作结构指针变量指向的结构成员的“低级”错误,从而导致令人费解的错误。 为了正确操作结构指针变量,必须为结构指针变量提供有效的结构变量地址。 例如:
这个程序输出的值变得不可预测。 "程序中只定义了结构指针变量,而没有为结构指针变量分配有效值,导致结构变量指向的地址不确定,无法获得预期的结果. "
结构UART {
int a;
uchar b;
}
输入主(语音) {
结构UART * p;
p-a=0xXXX;
p-b=0xXX;
printf('%I、%c '、p-b、p-a );
返回0;
}
应该改为:
结构UART {
int a;
char b;
}
输入主(语音) {
结构UART? *p;
结构自动DD;
p=dd; //这句话必须。 否则,会发生无法预测的问题
p-a=0xXXX;
p-b=0xXX;
printf('%I、%c '、p-b、p-a );
返回0;
}
指向结构的指针初始化示例:
结构事件{
char *name;
int score;
结构稳定*下一步;
}stu,*stu1;
int main () )。
stu.name=(char* ) malloc ) sizeof (char ); /*1.需要初始化结构成员指针*
strcpy(stu.name,' Jimy ';
stu.score=99;
su1=(结构稳定* ) malloc ) sizeof (结构稳定); /*2.需要初始化结构指针*
stu1-name=(char* ) malloc ) sizeof (char ); /*3.结构指针的成员指针也需要初始化*
stu.next=stu1;
strcpy(stu1-name,' pydrs ';
stu1-score=98;
stu1-next=NULL;
printf(name%s,score %d n ),stu.name,stu.score );
printf(name%s,score %d n ),stu1-name,stu1-score );
自由(stu1 );
返回0;
}