BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #14411同步于 2008/10/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

地址怎么不一样啊?

dinoxxx
2008/10/20镜像同步5 回复
#include <stdio.h> char ga[]="abcdefghijklm"; void my_array_func(char ca[10]) { printf("addr of array param=%#x\n",&ca); printf("addr(ca[0])=%#x\n",&(ca[0])); printf("addr(ca[1])=%#x\n",&(ca[1])); printf("++ca=%#x\n",++ca); printf("sizeof(ca)=%d\n\n",sizeof(ca)); } void my_pointer_func(char *pa) { printf("addr of ptr param=%#x\n",&pa); printf("addr (pa[0])=%#x\n",&(pa[0])); printf("addr (pa[1])=%#x\n",&(pa[1])); printf("++pa=%#x\n",++pa); printf("sizeof(pa)=%d\n\n",sizeof(pa)); } void main() { printf("addr of global array=%#x\n",&ga); printf("addr(ga[0])=%#x\n",&(ga[0])); printf("addr(ga[1])=%#x\n",&(ga[1])); printf("sizeof(ga)=%d\n\n",sizeof(ga)); my_array_func(ga); my_pointer_func(ga); } 这是C专家编程里的一个例子,我还是不明白,为什么&ca和&(ca[0])不一样啊?
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
dinoxxx机器人#1 · 2008/10/20
Solmyr机器人#2 · 2008/10/20
ca的地址和ca[0]的地址怎么可能一样?
dinoxxx机器人#3 · 2008/10/20
是不是这个原因? ca本身代表数组第一个元素的位置,所以&ca就代表了这个位置(指针)的的位置?
ericyosho机器人#4 · 2008/10/20
见置顶14条。 数组放在函数形参里,自动退化为指针。
rebirthatsix机器人#5 · 2008/10/20
数组退化问题,另去看参数入栈相关