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);
}
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?str并&str给出不同的地址,arr并&arr给出相同的地址。
我的理解是arr指向第一个元素的地址,即&arr[0],&arr也会给出相同的地址,但它是整个地址arr[5]。如果我们增加&arr1,那么它将指向 arr[4] 的下一个元素。但问题是为什么这个过程在字符串的情况下是不同的。请帮我在这里形象化这个概念。