【发布时间】:2020-07-25 21:25:24
【问题描述】:
int main(){
char *str1="Hi", *str2 = "Bye";
printf("%u,%u\n",&str1,str1);
int arr[5]={1,2,3,4,5};
printf("%u,%u",arr,&arr);
}
这里发生了什么? str 和 &str 给出不同的地址,arr 和 &arr 给出相同的地址。
我的理解是arr 指向第一个元素的地址,即&arr[0] 和&arr 也会给出相同的地址,但它是整个arr[5] 的地址。如果我们将&arr 增加 1,那么它将指向 arr[4] 的下一个元素。但问题是为什么这个过程在字符串的情况下是不同的。请帮助我在这里形象化这个概念。
【问题讨论】:
标签: c arrays string pointers string-literals