zer*_*d0l 1 c string pointers
在阅读有关"只读"字符串时,遇到了以下代码段.
#include<stdio.h> main() { char *foo = "some string"; char *bar = "some string"; printf("%d %d\n",foo,bar); }
我所理解的是foo和bar都会打印相同的地址,但我无法理解背景中究竟发生了什么.即当字符串相同时它将返回相同的地址,但是当我修改字符串时,地址是不同的.
Yu *_*Hao 5
foo而bar两者都将打印相同的地址
foo
bar
实际上,根据标准,它们不需要具有相同的地址,它是未指定的.但实际上,大多数编译器会使相同的字符串文字保持相同的地址.
你不能修改字符串文字,我认为你的意思是你使用不同的字符串文字,在这种情况下,很明显字符串将包含不同的地址.
C11 6.4.5字符串文字 如果这些数组的元素具有适当的值,则这些数组是否不同是未指定的.如果程序试图修改此类数组,则行为未定义.
如果这些数组的元素具有适当的值,则这些数组是否不同是未指定的.如果程序试图修改此类数组,则行为未定义.
归档时间:
11 年,11 月 前
查看次数:
1171 次
最近记录: