鱼C论坛

 找回密码
 立即注册
查看: 996|回复: 6

[技术交流] 对于 int *p = &a; *p = 30; 说说自己的看法

[复制链接]
发表于 2023-8-2 11:31:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
int a = 20;

int *p = &a;
*p = 30;


=号左边都是一样的,是不是意味着&a 和30 是一样的呢?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-2 11:49:12 | 显示全部楼层
本帖最后由 陈尚涵 于 2023-8-2 11:50 编辑

这边不知道你是想表达问题求助还是技术交流,我就当是问题求助看了
这里第2行这句的话前面是int*而不是int,表示定义一个指针,后面&a表示变量a的地址
然而这里第3行和第二行表面看=号左边都是一样的,但是因为第二行前面有int,表示的是定义一个指针,而这里的*p指的是指向的变量的值,因为p指向了变量a的地址,所以*p就可以访问到变量的值,这里对变量a的值进行了修改
所以说这个代码的步骤是先定义了一个变量,再定义了一个指针指向这个变量,再通过指针间接修改变量的值,此时,变量a的值为30
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 14:23:03 | 显示全部楼层
陈尚涵 发表于 2023-8-2 11:49
这边不知道你是想表达问题求助还是技术交流,我就当是问题求助看了
这里第2行这句的话前面是int*而不是int ...

兄弟,以下是我的理解
    //以下把p直接看成一个地址,完全可以

    //先是开辟指针变量的空间,然后从右往左算
    //a   就是原来的20
    //&a   取20的地址 0x4a4a
    // = &a   准备赋值
    // p= &a    将 0x4a4a赋值给指针变量p(0x4a4a)
    // *p = &a    取指针p(0x4a4a)的值,啥也不发生
    int *p = &a;
    
    // = 30   准备赋值
    // *p(0x4a4a) = 30   修改指针变量指向的值
    *p = 30;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 14:25:21 | 显示全部楼层
还有个问题,如果我是C语言开发者,我可能会设计另外一个符号来声明指针变量,比如用^    int ^p = 0x4a4a4;   这样,而不是用原来的*号,*号只用来取值就可以。
请问我可以这样吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 14:46:27 | 显示全部楼层
涛4091 发表于 2023-8-2 14:25
还有个问题,如果我是C语言开发者,我可能会设计另外一个符号来声明指针变量,比如用^    int ^p = 0x4a4a4 ...

不可以的,你得遵守语言的语法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 16:20:07 | 显示全部楼层
陈尚涵 发表于 2023-8-2 14:46
不可以的,你得遵守语言的语法

你好,我的意思是我这个思想行不行,我觉得这样应用很好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 16:28:23 | 显示全部楼层
涛4091 发表于 2023-8-2 16:20
你好,我的意思是我这个思想行不行,我觉得这样应用很好

感觉可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 10:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表