【发布时间】:2011-05-20 10:05:09
【问题描述】:
我正在从以下两个声明和初始化中打印出地址和字符串:
char * strPtr = (char *) "This is a string, made on the fly.";
char charArray [] = "Chars in a char array variable.";
打印时,以下输出出现,变量 charArray 和 strPtr 的地址完全不同。问题是,“为什么?”
印刷:
printf( "%10s%40s%20p\n", "strPtr", strPtr, &(*strPtr));
printf( "%10s%40s%20p\n", "charArray", charArray, charArray);
输出:
strPtr This is a string, made on the fly. 0x400880
charArray Chars in a char array variable. 0x7fff12d5ed30
如您所见,不同的地址是:0x400880 与 0x7fff12d5ed30
在此之前声明的其余变量的地址与 charArray 类似。
同样,问题是,“为什么地址如此不同?” 感谢您的帮助。
【问题讨论】:
-
只是一些建议;声明指向字符串文字的指针更有利,例如
const char *str = "string";。这有助于防止尝试修改字符串文字的未定义行为。 -
@dreamlax +1 提供可靠建议