指针常见错误
程序员文章站
2022-05-03 15:54:11
...
1 引用未初始化的指针错误
如果指针变量未初始化,那么编译器会让他指向一个固定的,不用的地址。
#include<stdio.h>
int main(void)
{
int *p, *q;
printf("p = %#x\n", p);
printf("q = %#x\n", q);
return 0;
}
2 往一个存放NULL地址的指针变量里面写入数据
#include<stdio.h>
int main(void)
{
int i = 3;
int *j = NULL;
*j = i;
return 0;
}
现在将指针初始化为指向NULL。NULL也是一个指针变量。NULL指向的是内存中地址为 0 的内存空间。以32位系统为例,内存单元地址的范围是0x0000 0000 ~ 0xffff ffff。 其中0x00000000就是NULL所指向的内存单元的地址。但是在操作系统中,该内存单元是不可用的,凡是试图往该内存单元中写入数据的操作都会被视为非法操作,从而导致程序错误。同样,这种错误在编译的时候也不会报错,只有在执行的时候才会出错。这种错误也属于“段错误”。