c语言之指针-深入分析

本文深入探讨了C语言中的指针,包括指针的两个值(地址值和所指对象的值)、指针的类型和所指对象类型的一致性、指针所对应的内存区域、复杂的指针类型(数组指针和函数指针)以及指针的值和偏移。通过实例分析了指针如何影响内存中的数据,并展示了如何通过指针操作数组和理解指针在不同数据类型间转换的影响。
摘要由CSDN通过智能技术生成

1.指针的概述
int a=123456789;                
char * pch=(char *)&a;
short * ps=(short *)&a;
unsigned short *ups=(unsigned short *)&a;
int *pi=&a;

printf("%d\n",*pch);
printf("%d\n",*ps);
printf("%d\n",*ups);
printf("%d\n",*pi);
输出结果:
21
-13035
52501
123456789
(1)指针有"两个值":
指针本身也就是所指对象的地址值&a(一个地址),指针本身也是一个变量,指针所指的对象a,通常用*加指针变量来找到所指的值。
如果把指针pi比作一个房间,a就是房间里面我们想要找的人,这个时候*相当于钥匙,*pi来打开这扇门,找到a,同样用&来找到a的地址,也就是pi。
(2)指针本身来还具有一些其他属性:
指针的类型和指针所指向的类型,指针的类型必须要和所指向的类型对应一致。例如int*只能指向int型数据(可以强制转换)。
int a=123456789,char *pch想要指向a就必须将a的类型强制转换为char,short同理。
而我们知道指针pch是存储a的地址,&a已经取得了a的地址,所以&a强转为char *直接就和pch对应了(pch指向a,pch的值是&a)。下面ps同理。
(3)指针所对应的内存区域
指针虽然只存储一个地址,但是他的类型规定了为该地址划分多少连续空间,所以指

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值