我从以下两个声明和初始化打印出地址和字符串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 2010-12-05 03:33:04