c语言数据结构 为什么加上画红线的地方就运行不出来?

如题所述

str没有初始化 初始时是随机值。

这时对一个非法的ch去调用free就会挂掉了。

改成

Str str={0};
Str substr={0};追问

ch是随机值,为什么非法呢?对一个非法的ch去调用free为什么会挂掉?

而且请问str赋初值为什么是{0}就可以?str是一个结构体,里面一个指针一个整型变量,这个0是什么?

追答

free的参数必须是合法的malloc或者同类函数的返回值,否则就会挂掉。
赋初始值其实就是让所有元素全零,这里单独把ch初始化为null也是可以的

追问

那么str={0},这个0其实是给length赋值了吧?没管里面的指针ch吧?

追答

对于结构体 或者数组,部分元素初始化后,剩余元素默认初始化为0.

追问

最后请教一下,str{0},这个0是相当于str.ch=NULL;还是length=0?也就是说这个0究竟是给哪个数据项赋值?

追答

定义的第一个
也就是str.ch=NULL;

温馨提示:内容为网友见解,仅供参考
无其他回答

c语言数据结构程序 这个程序哪里有错?为什么运行不出来
1,while(c)是死循环 2,Str的ch指针需要用new或者malloc分配内存,分配的大小是:strlen(ch) + sizeof(char)

数据结构(c语言)中,为什么输入数字程序正确,输入字母程序就运行不了呢...
char rearvex;int weight;};输入也改为scanf("%c,%c,%d",&edgeset[i].frontvex,&edgeset[i].rearvex,&edgeset[i].weight 假如你的输入是从1号点到5号点,权为400,按照你的程序就应当输入:1,5,400。这样就可以的啊。或者是从点A到点F,权为400,就应输入A,F,400,也可以的。

数据结构(用c语言描述)第二张图划红线那里为什么一定要有个取地址符号...
而这里这个函数内部并没有改变指针变量L的值,所以,可以不加&。

C语言数据结构中的算法分析里的运行时间的问题
由于T1和T2是线性叠加的,所以他们并不影响渐进速度.或者换一种方式,T1(n)+T2(n) = O(2F(n)) = O(F(n)) 因为常数系数没有影响.

c语言的数据结构的程序应该在哪里运行的?我用c软件运行时发现就是照...
书里的代码基本上是C语言,但有部分是伪代码,也就是形象表示出来而以,不是真正的C代码,要改一下才行的!还有另一种情况就是代码不全,有部分在前面提到的,只做一些#include或什么都不理。最后提一下,学习数据结构不要去运行那些代码,看懂代码是最主要的,运行代码得的结果能帮到你弄懂代码...

c语言的数据结构的存储 问题...
共用体类型和结构体类似,都是由不同的数据类型所组成的,区别是结构体类型的变量是分别存放的,而共用体类型的变量是存放在同一段内存空间的。这段内存空间的大小由共用体中成员的类型决定,占据内存空间最大的成员所占的字节数就是共用体变量所占的字节数。(摘自《Visual C++ 开发技术大全》P53)由...

数据结构书上的算法能运行吗?
能,但是要略改一下,数据结构书上的算法是描述性的,你稍微修改下符合C语言的语法就行了。

关于数据结构(C语言)的几个题
1.随意画几个二叉树就知道了,这里空链域用ε表示,数一数结点个数与ε个数就知道是n+1了 2.具体过程在图中给出。3.第一步将数据(假设为e)放入s的data中;第二步s的后继指向q的后继节点;第三步q的后继指向s 4.查找72只需2步:第一步:设立low、high与mid指针,将72与mid指向的值...

数据结构问题。。。c语言
图二那句void printN(int n)叫做函数申明。main是入口函数,调用printN这个函数。所以,只要确保printN定义在main函数之前,或者是在main调用之前申明。都可以。所以,你可以排成:1、include <stdio.h> void printN(int n){。。。}\/\/把代码放在main前面就不需要申明语句。int main(){ 。。p...

我们学的数据结构c语言版,里面每个函数前面都有?
我有两种理解:第一,status在实际使用中是C语言规定的表示error,ok的标识符;第二,书上写status是为了表示一般性,实际使用时要把写status的地方换成对应的数据类型(如int,float,char等)。请问哪个理解对啊? (2)如果是使用时要换成对应的数据类型,那status还怎么与error,ok对应上啊?? 这...

相似回答
大家正在搜