指针在定义后必须要先初始化才能使用,为什么?如果不这样做,对程序有何影响?

同上

不初始化也可以正确使用,只要在使用时正确赋值就可以,但是如果不初始化,则该指针为漂浮的指针,所指的地址不确定,而且指向的地址中的内容也不确定,如果乱用的话可能会影响其他程序的运行。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-12
指针定义后没有指向任何一个地址
初始化后编译器随机地给指针分配一个地址后它才有了实际的意义
比如定义一个指针FLOAT
未初始化是它的值是“NULL”
初始化后就是一个内存地址了
第2个回答  推荐于2018-04-19
对程序的影响是:
编译可能出错误/警告,或者运行有问题
不初始化的变量就使用可能会出现警告。

对于外部或静态指针变量在定义中若不带初始化项,指针变量被
初始化为NULL, 它的值为0。Turbo C中规定,当指针值为零时,指针不指向任何有效数据,有时也称指针为空指针。因此,当调用一个要返回指针的函数时, 常使用返回值为NULL来指示函数调用中某些错误情况的发生。本回答被网友采纳
第3个回答  2013-08-12
如果该指针是局部变量,则如果没初始化,它的值是随机值,对于它的操作很可能引起段错误,导致程序崩溃
如果该指针是全局变量,则它默认的初始值是NULL,任何最NULL指针的引用都会被判错,导致程序崩溃。
一个合格的程序员必须养成在定义的时候指针是对其初始化,并且对用完的指针置NULL。

指针在定义后必须要先初始化才能使用,为什么?如果不这样做,对程序有何...
不初始化也可以正确使用,只要在使用时正确赋值就可以,但是如果不初始化,则该指针为漂浮的指针,所指的地址不确定,而且指向的地址中的内容也不确定,如果乱用的话可能会影响其他程序的运行。

指针变量在使用前必须初始化是什么意思?
就是 使用前,这个指针必须指向某个存储空间。

指针要初始化吗
定义指针后可以不初始化,但实际上这个指针变量中已经有一个值了(就是分给这个指针变量的地方内存中原来的值,假设是0x1234)。但是用前一定要初始化,否则就是用去操作0x1234这个地方的内容,就会出问题,因为你并不知道把0x1234作为地址,所指向的地方是什么东西,可能是段系统代码,那么你的code就会...

为什么指针变量必须先赋值,再使用
因此养成初始化指针是一个简单良好的安全习惯,当指针暂时没有取得正确的地址前也必须初始化null,而在使用指针前也必须养成先判断再访问的习惯,比如 if (p){\/\/操作指针},不要怕多打一个if感到麻烦。而如果指针未被赋值为正确的地址,指针变量中的地址是随机的,也许是上个临时变量或程序的残留,而...

C语言指针变量为什么要赋初值?
1、给指针变量赋初值在语法上是没有错误的,编译执行也可以通过,但是一旦代码量增多后,很容易造成指针的错用,为了防止这一问题最好将指针变量定义的时候就置成NULL,这样做是为了代码安全着想。2、指针定义后就会随机指向一个位置的,编译的时候也不会提示错误,程序短很容易找出来,长了多了就难找了...

一个指针,如果一开始没有给它进行初始化,直接给它赋值是错的吗?那...
一个指针没有初始化,而且也没有被赋值(注意,赋值是指p=a,p是个指针,a是个变量)时,是不能取值的(*p),因为此时指针没有指向任何内存。一个指针数组,在定义时就给他分配了内存,当然可以直接给指针赋值了,但是取值(*p[5]),仍然是不行的。。。总而言之,指针只有指向了实际的内存才能被取...

C++中局部变量一定要初始化吗,为什么?
可以不初始化,但是在后续的过程中,一旦需要使用这个变量,一定要记得先初始化,所以在声明时就初始化是个好习惯,也是值得提倡的做法

C++不进行中变量初始化初始化会造成什么影响?
C++不对变量初始化,可能会导致以下后果:计算结果不正确 程序逻辑与期望逻辑不一致 对于使用函数指针的程序,将导致进程崩溃。写入硬盘的数据产生错误 严重的可能导致系统甚至硬件出现故障。

为什么这样定义并初始化int* a; *a=10;不行啊???
printf("the address of a is: %d\\n",a);说明: int *a 声明一个指针,该指什值是随机的无意义的,你并没有进行初始化,也就是大家所说的野指针,这样非常危险的操作!(*a) = 10,通过指针对未知区域进行赋值,当然是错误的!这样写一下:int val = 2, *a;a = &val; \/\/关键一点 (*a...

文件指针使用注意事项
二.要避免使用未初始化的指针。很多运行时错误都是由未初始化的指针导致的,而且这种错误又不能被编译器检查所以很难被发现。这时的解决办法就是尽量在使用指针的时候定义它,如果早定义的化一定要记得初始化,当然初始化时可以直接使用cstdlib中定义的NULL也可以直接赋值为0,这是很好的编程习惯。三....

相似回答