鱼C论坛

 找回密码
 立即注册
查看: 1280|回复: 7

[已解决]c语言的问题 求解答

[复制链接]
发表于 2020-2-21 19:08:02 | 显示全部楼层 |阅读模式

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

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

x
图片中画圈的地方难道不应该用*pc=&num吗?
求大佬解答
最佳答案
2020-2-21 20:03:10
const int *pc=&cnum 实现了两个功能,一是定义了pc为int类型的指针变量,另外将cnum变量的地址赋值给了pc。

单独赋值的时候的语句是这种格式 pc = &num。pc前面不用加*了。

最后一条是打印语句,*pc表示的是pc指针(也就是变量地址值)所指向的内容。
批注 2020-02-21 190046.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-21 19:09:31 | 显示全部楼层
本帖最后由 qiuyouzhi 于 2020-2-21 19:10 编辑

之前不是定义过一遍了吗
定义过了就不用加*号了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-21 19:24:49 | 显示全部楼层
qiuyouzhi 发表于 2020-2-21 19:09
之前不是定义过一遍了吗
定义过了就不用加*号了

*pc=&cnum的意思不应该是将&cnum的地址放到指针变量里吗?
所以不应该把&num的地址重新放到指针变量里吗?
pc= &num的意思不是将&num的地址放到pc这个指针里吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-21 19:29:53 | 显示全部楼层
一颗大棗 发表于 2020-2-21 19:24
*pc=&cnum的意思不应该是将&cnum的地址放到指针变量里吗?
所以不应该把&num的地址重新放到指针变量里吗 ...

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

使用道具 举报

 楼主| 发表于 2020-2-21 19:35:40 | 显示全部楼层

那这么理解的话后面打印出的结果*pc和pc都应该是&num的地址了,可是打印出来的值*p就是num的值。这是为啥呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-21 20:03:10 | 显示全部楼层    本楼为最佳答案   
const int *pc=&cnum 实现了两个功能,一是定义了pc为int类型的指针变量,另外将cnum变量的地址赋值给了pc。

单独赋值的时候的语句是这种格式 pc = &num。pc前面不用加*了。

最后一条是打印语句,*pc表示的是pc指针(也就是变量地址值)所指向的内容。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-21 20:49:14 | 显示全部楼层
本帖最后由 major_lyu 于 2020-2-21 21:04 编辑
一颗大棗 发表于 2020-2-21 19:35
那这么理解的话后面打印出的结果*pc和pc都应该是&num的地址了,可是打印出来的值*p就是num的值。这是为啥 ...


你这把*运算符和指针遍量声明搞混了。
在进行变量声明时,变量前边加*,表示声明的变量是指针变量。例如 int *p或者int* p。都是声明变量p为指向整型变量的指针,这个时候变量名还是p,而不是*p,只是变量p的类型是指针而不是整型。

在变量声明之外,*放在指针变量ptr之前,表示取内存地址位ptr的内存中的数据。
例如,声明两个变量:
int* ptr=NULL;  //整型数据指针变量(ptr地址A)
int num=0;               //整型变量(num地址B)
int num2 = 1;            //num2地址C
int num3 = 2;            //num3地址D
ptr = # //语句的意思是把变量num的地址赋值给指针变量ptr,即ptr中存放的是ptr的地址。这时ptr变量发生变化,由NULL变成num的内存地址。(ptr=B)
*ptr  =  num2;//的意思是把变量num的值赋值给指针ptr指向的内存单元。这时,ptr的值不变,只是其中存储的数据发生变化,即变量num的值变成1
num3 = *ptr; //的意思的将指针ptr指向的内存单元中的数据赋值给变量num3。即num3 = 1


&运算符是取址运算符,放在变量之前表示返回变量的内存地址。
例如上述变量声明之后。&num是变量num的地址。&p是变量p的地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-2-22 11:31:16 | 显示全部楼层
major_lyu 发表于 2020-2-21 20:49
你这把*运算符和指针遍量声明搞混了。
在进行变量声明时,变量前边加*,表示声明的变量是指针变量。例 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 01:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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