printf()的参数格式

char arr1[20] = { 0 };
char arr2[ ]="hello";
sricpy ( arr1, arr2);
printf(“%s\n”, strcpy( arr1, arr2));
刚入门想问一下,sricpy返回的不是char*指针类型吗?那printf后面这里链视访问返回的不是指针地址吗?打印出来的是hello
我暂时学过的都还只是这样子的
int a = 10;
printf("%d", a);

然后我就产生了一个疑问,printf(“%s”,? )后面参数这个是可以放地址,也可以放变量名称吗?
那像strcpy返回的是地址,为什么打印出来的是变量?

应该是非常基础的问题,学得不好,望指点ಥ_ಥ

strcpy返回的不是char*指针类型吗? 是
那printf后面这里链视访问返回的不是指针地址吗? 是,但是需要用%p输出地址,%s默认根据首地址输出后续字符

img

printf(“%s”,? )后面参数这个是可以放地址,也可以放变量名称吗? 可以

printf("%s",?),这个问号是字符串首地址。数组名称相当于首地址,所以写数组名称即可

你把字符串复制到数组,就变成了字符数组,
所以不应该是%s,而是%c.

建议你看下这篇博客printf 制表符格式对齐
同时,你还可以查看手册:c语言-printf() 中的内容