c语言空指针可以赋值吗(能给空指针赋值吗C/C++)
本文目录
能给空指针赋值吗C/C++
p=0 和 p=null是一样的,都是让指针p指向0地址处。你的意思应该是 *p = 0会怎么样吧,这样写编译能过,但绝大多数情况下,运行时会挂掉。因为0地址是不允许写的
C语言用来CHAR还有NULL
15.C解析:A B 空指针不可以赋值。会出错。D 指针未赋值。 野指针不可以使用。16.A解析:如果null是小写的话,那么这道题选B,C中大小写有区分,大写的NULL实际上就是系统定义的一个符号常量,它的值为0,也就是如果是printf("%d\n",NULL);那么输出为0,选A
c语言二级指针初始化为空后赋值问题
对指针的理解不够深刻,首先指针也是一个变量。二级指针保存着是一级指针地址的变量,所以int **ppdata = NULL说明了 这个二级指针保存的是一个一级指针的地址,保存的地址是0;由于保护模式的缘故,(可自行查阅资料),ring3无法对保护段的内存进行读写,所以会出现运行时崩溃。而第一个没报错的原因是因为一级指针虽然初始化保存了0的地址,但是代码在之后的操对一级指针进行重新赋值让其指向了别的内存段。所以没报错。
c语言空指针void*赋值struct,结构强制转换问题
所谓空指针类型,就是说这个指针是无数据类型的指针,空指针data,它起的作用就是存放的是某个内存单元(也就是内存中某个字节,因为内存一般是按字节来编址的)的地址,由于空指针data没有初始化,那么它的指向是不确定的(即它存放的地址值是个未知数,我们不知道是谁的地址,这样的指针我们称为野指针),你把这个不确定的地址强制转化后赋值给结构体指针变量temp,赋值语句本身没有什么语法错误,你把这个地址打印出来也是没有什么问题的,但是如果你对这个地址的内存单元进行赋值操作,修改了这个内存单元的内容,那么可能会造成严重的后果。比如说这个地址所属的内存单元是操作系统的,你修改它的值,就有可能造成死机的后果。
C语言怎么赋空值
C语言并没有空值这个概念,一般习惯上,指针若是指向地址0便是空值,其他数据若内容是0便是空值。填充一大片内存区域可以使用memset函数,它的填充长度是按字节计。整形:int a = 0;字符型:char a = 0;数组:int a;memset( a, 0, sizeof(int)*20 );C字符串只需要把第一个字符设为’\0’即可。当然也可以全部清成0。char a = "ashdfuih";memset( a, 0, sizeof(char)*20 );例如有一个结构体Some x,可以这样清零:memset( &x, 0, sizeof(Some) );如果是一个结构体的数组Some x,可以这样:menset( x, 0, sizeof(Some)*10 );任何一个指针都可以通过直接赋为0变成空指针:Some* p = 0;
更多文章:
阿司匹林肠溶片的正确吃法早上还是晚上(如何正确服用阿斯匹林)
2024年7月20日 08:09
css链接样式是什么(css中导入样式表和链接样式表有什么区别,我不是问语法,而是问内在区别,还有我怎么才能体会到他们的区别)
2024年6月20日 13:29
screenx影厅是什么意思(在线求,什么是ScreenX电影有看过的吗)
2024年7月5日 09:03
translate full text(加载中a是英语什么意思)
2024年7月3日 14:50
checkboxlist是什么意思(CheckBox和CheckBoxList有什么区别)
2024年7月3日 14:11
钩子程序 pdf(我在VC++中写了键盘勾子程序,但当我把鼠标点到任务栏后,钩子程序就失去效果请问什么原因呢有啥解决)
2024年7月9日 20:48
copyto(对c#中bitarray类的copyto()方法的疑问)
2024年7月24日 14:25
原码反码补码的表示范围(原码,反码和补码表示的规则分别是什么)
2024年7月5日 06:29
css border radius(css圆角问题,border-radius问题)
2024年5月8日 17:04
江苏铁路规划(规划建设中的京沪高铁二线,走县线市新沂,还是走江苏第一大海港城市连云港更重要呢)
2024年6月7日 01:36
做文员必须学会哪些表格(办公文员需要掌握excel的哪些知识具体怎么做)
2024年7月14日 15:39