涛4091 发表于 2023-8-2 11:31:00

对于 int *p = &a; *p = 30; 说说自己的看法

int a = 20;

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


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

陈尚涵 发表于 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

涛4091 发表于 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;

涛4091 发表于 2023-8-2 14:25:21

还有个问题,如果我是C语言开发者,我可能会设计另外一个符号来声明指针变量,比如用^    int ^p = 0x4a4a4;   这样,而不是用原来的*号,*号只用来取值就可以。
请问我可以这样吗

陈尚涵 发表于 2023-8-2 14:46:27

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

不可以的,你得遵守语言的语法

涛4091 发表于 2023-8-2 16:20:07

陈尚涵 发表于 2023-8-2 14:46
不可以的,你得遵守语言的语法

你好,我的意思是我这个思想行不行,我觉得这样应用很好

陈尚涵 发表于 2023-8-2 16:28:23

涛4091 发表于 2023-8-2 16:20
你好,我的意思是我这个思想行不行,我觉得这样应用很好

感觉可以
页: [1]
查看完整版本: 对于 int *p = &a; *p = 30; 说说自己的看法