打印数组中的全部内容

#include <stdio.h>
int main()
{
char arr[] = {"avddf"};
printf("%s", arr);
}
用这串代码为什么能打印出arr里的字符串,arr在这个printf里不是首元素地址吗

printf中使用%s时,它会输出从这个地址开始的所有字符,直到遇到第一个'\0'字符时停止('\0'不会输出)
arr它是首地址,使用%s后会输出从首地址开始的所有字符,楼主还可以做另外的实验,比如:

print("%s",&arr[1]);
print("%s",&arr[2]);

看看是不是跟上面的一致

数组名确实是首地址,%s的格式就是字符串,你要求它打印字符串,printf就从数组首地址开始以字符串的格式输出数组内容,直至碰到结束符'\0'为止