当前位置:首页 » 编程语言 » c语言空指针未赋值的判断
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言空指针未赋值的判断

发布时间: 2022-05-05 20:17:26

c语言 关于空指针问题

1. if(y == NULL && w == NULL && d == NULL)这个语法上是对的,但是逻辑上不对,应该任何变量为空指针都不能执行,所以改为if(y == NULL || w == NULL || d == NULL)
2. if...else... 的用法问题,else后并不是一定要再加if的。而且if后面一定要有条件。
3. 循环只要是收敛的就可以用,但是要记得初始化
a=a初值;
b=b初值;
epsilon =较小值;
for(c = abs(a-b); c<epsilon ; c = abs(a-b);){
a = (a+b)/2;
b = sqrt(a*b);
}
4. 要修改y,w,d所指向的值,所以要用指针。否则直接用int y,w,d的话只能修改函数内部变量,不能带出函数。(形参和实参的概念)

程序修改如下:
int convertTime(int days, int *y, int *w, int *d){
if(days < 0){
return 1;
}
else if(y == NULL || w == NULL || d == NULL){//去掉多余的if,并修改&&为||
return 1;
}
else{//去掉多余的if
int a = days%365;
*y = days / 365; //可以直接这么写,由于分子分母都是整数,所以这里的除号是做整除
*w = a / 7;
*d = a % 7;
return 0;
}
}

② c语言,空指针,野指针,通用指针

  • 空指针:空指针是一个特殊的指针值,也是唯一一个对任何指针类型都合法的指针值。指针变量具有空指针值,表示它当时处于闲置状态,没有指向有意义的东西。

  • 通用指针:通用指针,它可以指向任何类型的变量。通用指针的类型用(void *)表示,因此也称为void 指针。

  • 野指针:野指针也就是指向不可用内存区域的指针。通常对这种指针进行操作的话,将会使程序发生不可预知的错误。

空指针是一个特殊的指针值,也是唯一一个对任何指针类型都合法的指针值。指针变量具有空指针值,表示它当时处于闲置状态,没有指向有意义的东西。空指针用0表示,C语言保证这个值不会是任何对象的地址。给指针值赋零则使它不再指向任何有意义的东西。为了提高程序的可读性,标准库定义了一个与0等价的符号常量NULL. 程序里可以写 p = 0; 或者 p = NULL; 两种写法都把p置为空指针值。相对而言,前一种写法更容易使读程序的人意识到这里是一个指针赋值。我们印象中C语言的指针都有类型,实际上也存在一种例外。

这里涉及到通用指针,它可以指向任何类型的变量。通用指针的类型用(void *)表示,因此也称为void 指针。

野指针,也就是指向不可用内存区域的指针。通常对这种指针进行操作的话,将会使程序发生不可预知的错误。

“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。野指针的成因主要有两种:

①指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。

②指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。别看free和delete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。通常会用语句if (p != NULL)进行防错处理。很遗憾,此时if语句起不到防错作用,因为即便p不是NULL指针,它也不指向合法的内存块。

③ c语言中,空指针申请了内存但未赋值,它还是空指针么

这里的表达很不清楚。
申请内存时实际就是从内(的堆)中,指定没有使用的一块区域来存储某个数据,区域的大小也就是字节数在申请时已经传递给了内存申请函数,返回的指针就是这个区域的首地址。返回的指针赋值给某个变量,以后就可以通过这个指针变量来使用(存储或者是读取)所分配的这一块内存区域了。
所以就不清楚问题中说的空指针申请了内存所表达的意思。
如果还有问题,请继续追问。

④ C语言 空指针

int *p;p=&a空指针也分配了空间它里面是随机的码,我认为int *p和int*p=null是一样的。p=n就是p和n都指向了一个n内的随机数。

⑤ C语言中的空指针是什么意思

空指针是就是一个被赋值为0的指针。

对于空指针值,一般的文档中倾向于用 NULL 表示,而没有直接说成 0。但是我们应该清楚:对于指针类型来说,返回 NULL 和 返回 0 是完全等价的,因为 NULL 和 0 都表示 null pointer(空指针)。


(5)c语言空指针未赋值的判断扩展阅读

如果一个 空指针常量 赋给了一个有类型的指针变量,那么这个指针就叫空指针。它不指向任何的对象或者函数。

例如:如果 p 是一个指针变量。

若进行: p = 0;、p = 0L;、p = '';、p = 3 - 3;、p = 0 * 17; 中的任何一种赋值操作之后(对于 C 来说还可以是 p = (void*)0;)。

p 都成为一个空指针,并且由系统保证空指针不指向任何实际的对象或者函数。 反过来说,任何对象或者函数的地址都不可能是空指针。

指针作为实体,是一个用来保存一个内存地址的计算机语言中的变量。指针一般出现在比较底层的程序设计语言中,如C语言。高层的语言如Java一般避免用指针,而是引用。

指针作为数据类型,可以从一个函数类型、一个对象类型或者一个不完备类型中导出。从中导出的数据类型称之为被引用类型(referenced type)。指针类型描述了一种对象,其值为对被引用类型的实体的引用。

参考资料来源:网络-空指针常量

⑥ 在C语言中,创建一个指针变量,但是不赋值,是否就是空指针

对于未初始化的变量,编译器会给它们一个默认值,这个默认值是未知的(也许是NULL,也许是其他的),任何使用未初始化的变量的行为都是有隐患的。

⑦ C语言空指针是怎么回事

空指针指的就是NULL
也就是0指针
指针的含义 是一个地址。 而0地址是非法地址。对这个地址进行赋值 或者取值 就会出现空指针错误

在实际编程中,经常把指针初始化为空指针, 在访问的时候进行判断, 如果为空,那么就是还没有正确赋值的, 应该避免访问。

⑧ c语言 出现空指针赋值怎么回事请高手帮忙看下。

是编译器报的空指针赋值吧?主要原因:作者没有搞清楚C中的全局变量和局部变量的问题。
1。zts[35];point1[35];point2[35];x1[35]这四个数组在main()中有,在四个子函数中有,各是各的,互不干涉,所以main()中的这四个数组始终没有被赋值过,空指针指的就是这个吧。
2。应该把这四个数组的首地址作为四个read()的参数传过去,就可以实现:“在子函数中赋值,在main函数中使用” 的设计目的了。看程序,感觉作者就是这个目的吧。
3。 魔尊8 说的有一定道理,这四个read确实没有起到应有的作用。加上数组首地址做参数就可以了。或者把这四个数组做成全局变量也行啊。
4。作者有时间的话还是应该好好看看C语言的书啊。