C语言指针变量学习五

//下面的程序演示了指针没有被人为手动分配存储空间的错误
#include <stdio.h>
int main()
{
   int * p;
   int i = 5;
   *p = i;
   printf("*p=%d\n", *p);
   return 0;
}

指针变量一开始没有在程序中控制去分配内存单元,会导致,编译器自动分配一个临时的内存单元给p,

这个内存单元是不被控制的,当执行到*p = i;的时候,这个临时的内存单元中的值被改成了5,这是有很大

风险的,这个零时的内存单元中的值有可能是另外一个很重要的程序要使用,结果让你给改了,你还不知道

你改了什么地方的值。

VC6.0下编译这个程序会有警告,执行后会卡死。现在明白了吧,自己写的程序似乎编译没问题,但运行卡死了,

大多数情况下,这个C程序可能写的的很大问题。

编译器自动分配给变量的零时值称之为垃圾值,如果给一个指针变量一个垃圾值,不再给指针变量重新赋予新地址,

很可能就变成, 胡乱的指向不受控制的内存单元,不受控制改掉了内存单元中的值,写程序的人还没察觉到,

这是极其危险的。


//下面的程序演示了*q相当与整型变量,而p是整型指针变量,整型指针变量赋给整型变量
#include <stdio.h>
int main()
{
   int i = 5;
   int * p;
   int * q;
   p = &i;
   *q = p;
   printf("*q=%d\n", *q);
   return 0;
}
编译时后程序会报错covert  from int * to int




                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值