首页 > 编程知识 正文

linux内核current指针,控制浮点数的小数点后两位输出

时间:2023-05-06 18:13:25 阅读:137168 作者:2423

由于该楼层涉嫌违规,系统将其折叠并隐藏,以显示该楼层

作者:甜美的衬衫,华清远见嵌入式学院讲师。

大家都知道指针的学习对c语言学习非常重要,让我们来讨论指针中两个比较特殊的指针的相关概念,野指针和空指针。

首先说一下空指针。 void*这不称为空指针,而是称为无精确类型的指针。 这个指针指向一个内存,但没有告诉程序应该如何解释这个内存。 因此,此类型的指针不能直接执行获取内容的操作。 要解释内容,必须先将其转换为其他类型的指针。 另外,还有“”。 这也不是空指针指向的内容。 “”只是字符串的结束,不是空的意思。 真正的空指针是指这个指针不指向有意义的内存,例如:

char* k;

这个k被称为空指针。 我们没有把那个指向任意地方。 或者

char * k=空;

此处,k也称为空指针,因为它指向空值或0。 请注意,整数0而不是“”。 空指针也不能进行获取内容的操作。 这是初学者容易犯的错误。 只有当空指针指向真正有意义的内存时,才能检索内容。 也就是说必须这样做

k='hello world!' ;

此时,如果字符串总是亮的,则k不是空指针。

谈谈野生指南吧。 “野指针”不是空指针,而是指向“垃圾”存储器的指针。 人们不会错误地使用空指针。 因为用if语句很容易判断。 但是,“野针”很危险,if语句对它不起作用。

“野针”的原因主要有两种:

)1)指针变量未初始化。 创建指针变量后,它不会立即自动成为空指针。 默认值是随机的,会很混乱。 因此,指针变量必须在创建的同时初始化。 必须将指针设置为NULL或指向有效内存。 例如

char *p=NULL;

char*str=(char* ) malloc ) 100;

)指针p被free或delete后,未被设置为NULL,并且p被误认为是合法的指针。

free和delete只是释放了指针指向的内存,并没有杀死指针本身。 即使指针p被free,该地址也不变(不是空),但是对应于该地址的存储器是垃圾,只是p成为“野点”。 如果此时不将p设定为NULL,p会被误认为是合法的指针。

如果程序很长,则可能无法记住p所指的内存是否已释放。 在继续使用p之前,通常使用语句if(p ) (=NULL )进行错误防止处理。 很遗憾,此时if语句不能起到防止错误的作用。 因为即使p不是空指针,也不会指向合法的内存块。

char*p=(char* ) malloc ) 100;

srcpy(p,“hello”

free(p; //p指向的内存被释放,但p指向的地址不变

.

if(p!=null(//没有起到防止误动作的作用

{

srcpy(p,“world”); //错误

}

p会变成野针

)3)指针操作超出了变量的作用范围。 这是防不胜防的。 示例程序如下。

class A

{

公共:

voidfunc(void ) { cout“funcofclassa”endl; }

(;

语音测试(void ) )。

{

A *p;

{

a;

p=a; 注意//A的生命周期

}

p-Func (; //p为“野针”

}

函数Test是语句p-Func ) )时,对象a消失了,但p是“野指针”,因为p指向a。

希望今天讨论的关于这两点指南的话题对刚学习指南的同学有帮助。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。