C语言:初识指针(1)

指针是什么?

指针是c语言中的一个重要概念,也是C语言的一个重要的特色,每一个学习和使用c语言的人,都应当深入了解地学习和掌握指针,学过C语言的人都知道,指针就是C语言的灵魂。

在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。打个比方,一个房间的门口挂了一个房间号615,这个615就是房间的地址,或者说,615"指向"该房间。

指针就是变量,用来存放地址的变量(编号)

int a=10;//在内存中开辟一块空间
int *p=&a;//&a的意思是将a的地址取出来,*p的意思是将取出来的a地址放进变量p中

指针是用来存放地址的,地址是唯一标示一块地址空间的指针的;
指针大小在32位平台是4个字节,在64位平台是8个字节.

printf("%d\n",sizeof(int*));//8/4
printf("%d\n",sizeof(short*));//8/4
printf("%d\n",sizeof(char*));//8/4
printf("%d\n",sizeof(double*));//8/4

指针类型决定了指针进行解引用操作的时候,能够访问空间的大小

int a=0x11223344;
int*pa=&a;
char*pc=&a;
printf("%p\n",pa);
printf("%p\n",pa+1);//因为是int类型,所以地址加了4个字节
printf("%p\n",pc);
printf("%p\n",pc+1);//因为是char类型,所以地址只增加了1个字节

野指针

野指针:就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)

野指针成因:
1、指针未初始化
int*p;//局部变量指针未初始化,默认为随机值
*p=20;

2、指针越界访问
当指针指向的范围超出数组arr的范围时,就是野指针

int arr[10]={0};
int*p=brr;
int i=0;
for(i=0;i<=11;i++)
{
    *(p++)=i;
}  

3、指针指向的空间释放
咳咳,这里适合放在动态内存开辟的时候讲解。

如何规避野指针

1、指针初始化
2、小心指针越界
3、指针指向空间释放即使置NULL
4、指针使用之前检查有效性

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tyro达令

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值