鉴于声明:
char message[] = "hello, world"
Run Code Online (Sandbox Code Playgroud)
为什么那些打印出相同的结果?
printf ( "%s", message );
printf ( "%s", &message[0] );
Run Code Online (Sandbox Code Playgroud)
我所知道的是,%s只读取字符串的第一个地址.char message[]也被声明为char strings(char *message)的指针,并且message只读取字符串的第一个地址.但是,对于message[0],也被读作*(message + 0)并且我纠正它是这样的吗?
&message[0]= &*(message + 0)= &*message=message
当作为参数传递给函数时,数组名称转换为指向第一个元素的指针.
message腐朽指向第一个元素.它char *在衰变后有类型. &message[0]是第一个元素的地址.它也是类型char *.
&message[0] 相当于
&(*(message + 0) ) = &(*(message)) = &*(message) = message
Run Code Online (Sandbox Code Playgroud)
&并*取消彼此的影响.