打印
[其他]

C语言中(int *)p

[复制链接]
990|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1988020566|  楼主 | 2023-12-23 13:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

unsigned int adddress;      //定义一个变量作为地址


unsigned char value;     //地址中的值


unsigned char *p;


address=0x1111;


p=(unsigned char *)address;


value=*p;


根据指针的定义,定义指针变量unsigned char *p,给p赋值应该是变量地址的值,从而使指针指向这个变量,例如定义变量unsigned char a,为了使指针指向a,应该有这样的赋值语句:p=&a


在以上程序中,address已经是地址的值,从理论上讲应该直接让p=address,就可以让指针指向地址为address的变量,但是这样是不行的。因为p是指针变量,而address是普通变量,他们不能直接赋值的。


在程序中使用了p=(unsigned char *)address的赋值方法,通过(unsigned char *)将address转换成指针变量,其实只是作为一种转换方式,没有其他特殊的含义,这样之后p的值就是address的值,即0x1111。注意(unsigned char *)address与*address的含义是不一样的。


另外还应注意的是定义指针变量unsigned char *p的含义是p所能指向的是char型,而与p本身是没有关系的。由于本程序希望得到的是address地址中一个字节的值,所以定义了char型,因此也就定义了char型指针变量。


使用特权

评论回复
沙发
tpgf| | 2024-1-4 15:50 | 只看该作者
经常使用数组的话 就很少使用这个格式的指针了

使用特权

评论回复
板凳
drer| | 2024-1-4 16:29 | 只看该作者
有时候我都分不清楚是指向的地址还是地址中的数据了

使用特权

评论回复
地板
wiba| | 2024-1-4 19:20 | 只看该作者
如果数据溢出的话 结果就不可控了

使用特权

评论回复
5
kxsi| | 2024-1-4 19:55 | 只看该作者
这种使用方式非常容易造成错误的操作

使用特权

评论回复
6
coshi| | 2024-1-4 20:31 | 只看该作者
如果用指针嵌套指针 会不会引起混乱啊

使用特权

评论回复
7
qcliu| | 2024-1-4 21:04 | 只看该作者
指针的特点就是使用起来极为灵活

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

402

主题

10655

帖子

6

粉丝