c语言的问题 求解答
图片中画圈的地方难道不应该用*pc=&num吗?求大佬解答 本帖最后由 qiuyouzhi 于 2020-2-21 19:10 编辑
之前不是定义过一遍了吗
定义过了就不用加*号了 qiuyouzhi 发表于 2020-2-21 19:09
之前不是定义过一遍了吗
定义过了就不用加*号了
*pc=&cnum的意思不应该是将&cnum的地址放到指针变量里吗?
所以不应该把&num的地址重新放到指针变量里吗?
pc= &num的意思不是将&num的地址放到pc这个指针里吗? 一颗大棗 发表于 2020-2-21 19:24
*pc=&cnum的意思不应该是将&cnum的地址放到指针变量里吗?
所以不应该把&num的地址重新放到指针变量里吗 ...
对啊 qiuyouzhi 发表于 2020-2-21 19:29
对啊
那这么理解的话后面打印出的结果*pc和pc都应该是&num的地址了,可是打印出来的值*p就是num的值。这是为啥呢?{:5_92:} const int *pc=&cnum 实现了两个功能,一是定义了pc为int类型的指针变量,另外将cnum变量的地址赋值给了pc。
单独赋值的时候的语句是这种格式 pc = &num。pc前面不用加*了。
最后一条是打印语句,*pc表示的是pc指针(也就是变量地址值)所指向的内容。 本帖最后由 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的地址
major_lyu 发表于 2020-2-21 20:49
你这把*运算符和指针遍量声明搞混了。
在进行变量声明时,变量前边加*,表示声明的变量是指针变量。例 ...
谢谢您
页:
[1]