C - Difference between “char var[]” and “char *var”?
我期望以下两个向量在RAM中具有相同的表示:
1 2 | char a_var[] ="XXX\x00"; char *p_var ="XXX"; |
但奇怪的是,如果使用
为什么?
第一个创源的阵列中氟的字符的字符串。在内容的阵列可以改进的。第二次创源字符指针这一点对一个字符串的literal。。。。。。。字符串字面值是不能修改的。 </P >
为他人说,
1 2 | char *p_var ="XXX"; char *other ="XXX"; |
一个编译器可以选择的optimize这中储存的"XXX"的只读存储器的制造在一次和分球都点到它,它们的值可以缓解铅对unexpected行为,所以这就是为什么你的应不尝试去修改他们的内容。 </P >
在想,"
翼可以处理(generally)作为分球,但是那是不均的,他们是永远的interchangeable。。。。。。。为其他人说,你的_ VaR的P点的literal,静态的东西是不能被改变了。它可以点到其他的东西(如P _ var = &;_ var a [ 0 ]),但是你不能改变的原始值,你用specified quotes……………… </P >
一个类似的问题是当你是DEFINE A变为一个阵列中的一个文件,然后外部使用它作为一个指针。 </P >
关于 </P >