h浩哥h 发表于 2019-4-28 21:05:22

关于c语言指针



为什么在使用函数前取sec地址 需要&,使用完函数后就不用了

编译结果如下





ba21 发表于 2019-4-28 21:10:30

sec 是变量unsigned long型

getSeconds(unsigned long *par)这里是指针。

既然是指针,那么就需要的地址咯,sec 不是地址 &sec才是地址吧。


再附加一句,我觉得你这课没有认真看。sec 和 加&sec 意思你估计都没懂。

cquplz 发表于 2019-4-29 14:51:56

问问题要贴上代码,图片我不太好复制代码,,
你看一下,第一次是打印的sec的地址,第二次是打印的sec这个变量的内容或者就是它的值;
那个sec的地址作为参数传进函数以后,该函数的功能是让sec存储char*的指针数组的首地址,也就是sec这个时候保存的值就是char*的指针数组的首地址,
所以他这个时候打印的就是a这个数组的地址

cquplz 发表于 2019-4-29 14:53:11

cquplz 发表于 2019-4-29 14:51
问问题要贴上代码,图片我不太好复制代码,,
你看一下,第一次是打印的sec的地址,第二次是打印的sec这个 ...

指针数组要自己多画图自己想一下,这个搞不懂很正常,指针是C的灵魂,话说我自己都很久没看这一块了哈哈哈

HUMMER军 发表于 2019-5-1 17:23:34

啥玩意,这程序是你自己写的还是啥,搞不明白啥意思。。
sec是unsigned long型的变量,&sec是取sec这个变量所对应内存的地址,sec就是取值。
getSeconds(unsigned long *par)这个函数传入的参数是unsigned long型的指针变量,指针是存放变量地址的变量,既然是指针就需要传入一个地址!

另外:打印地址用格式符%p

justjust001 发表于 2019-5-1 17:37:41

第一个printf打印的是sec的地址。
第二个printf打印的是sec的值,sec的值在函数中被赋值为数组a的地址。所以打印的也是一个地址,数组a的地址,不是sec的地址。
页: [1]
查看完整版本: 关于c语言指针