Redian新闻
>
问个问题,浙大到底跳了几个? (转载)
avatar
问个问题,浙大到底跳了几个? (转载)# Biology - 生物学
w*n
1
main()
{
char *c1 = "abc";
char c2[] = "abc";
char *c3 = ( char* )malloc(3);
c3 = "abc";
printf("%d %d %s\n",&c1,c1,c1);
printf("%d %d %s\n",&c2,c2,c2);
printf("%d %d %s\n",&c3,c3,c3);
getchar();
}
运行结果
2293628 4199056 abc
2293624 2293624 abc
2293620 4199056 abc
看运行结果
为什么c2所指的地址,
和c2 自己的地址是一样,
我运行了,也是这样的。
avatar
f*r
2
【 以下文字转载自 Chemistry 讨论区 】
发信人: fatblackliar (轻风拂山岗), 信区: Chemistry
标 题: 问个问题,浙大到底跳了几个?
发信站: BBS 未名空间站 (Thu Dec 13 12:19:27 2012, 美东)
听说涂博士之后还是很多啊
avatar
j*x
3
The exceptions to this rule are when the array identifier is an
operand of either the sizeof or address-of (&) operators. When the
array is an operand of the & operator, the result is of type "pointer
to N-element array of T", or T (*a)[N], and its value is the address
of the base of the array, which is the same as the address of the
first element of the array.
avatar
h*6
4
是数组的特殊性,数组和指针不多的区别之一。
试试这个:
char* c4 = c2;
printf("%d %d %s\n",&c4,c4,c4);
avatar
r*y
5
那如何才能得到存储 c2这个变量的地址?

【在 j********x 的大作中提到】
: The exceptions to this rule are when the array identifier is an
: operand of either the sizeof or address-of (&) operators. When the
: array is an operand of the & operator, the result is of type "pointer
: to N-element array of T", or T (*a)[N], and its value is the address
: of the base of the array, which is the same as the address of the
: first element of the array.

avatar
a*l
6
不存在c2这个变量.

【在 r*******y 的大作中提到】
: 那如何才能得到存储 c2这个变量的地址?
avatar
w*n
7
谢楼上的。我市猪
我懂了
avatar
g*s
8
还有一个点是c1和c3指向的string literals的地址是一样的,因为是identical string。 compiler会用string pooling
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。