Sur*_*rya -1 c pointers initialization
我有一个未初始化的int指针.打印时,此值始终显示为0.
但是当检查NULL时,它不会通过条件.
有趣的是,这个野生指针在没有抛出Segmentation Fault的情况下获取价值.
任何解释??
代码如下:
int main (){
int *p1;
int *p2;
int var=90;
printf("p1 = %x\n", p1);
printf("p2 = %x\n", p2);
p1 = &var;
if(p2==NULL)
{return 0;}
*p2 = *p1;
printf("*p2 = %x\n", *p2);
}
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样..
# gcc -std=c99 -o main *.c
# main
p1 = 0
p2 = 0
*p2 = 90
Run Code Online (Sandbox Code Playgroud)
几点:
%p打印void *指针.0,尽管它通常在现代机器中.总而言之,像这样探索UB并不能证明什么.
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |