永发信息网

c 语言,请问char *s1="abc",那么printf("%1d",s1)和printf("%1d",&s1),各代表什么?

答案:3  悬赏:60  手机版
解决时间 2021-04-06 01:50
  • 提问者网友:嗝是迷路的屁
  • 2021-04-05 02:45
c 语言,请问char *s1="abc",那么printf("%1d",s1)和printf("%1d",&s1),各代表什么?
最佳答案
  • 五星知识达人网友:拾荒鲤
  • 2021-04-05 03:46
printf("%1d",s1);表示输出字符指针s1指向的字符的ASCII码值,对应上应该是输出a的ASCII码值97
printf("%1d",&s1);表示输出存储字符指针变量s1的内存空间的地址。这个应该是个很大的数,就是内存中某个地址的值。
哦,前面的说错了,
printf("%1d",s1);表示输出存储字符串"abc"的内存空间的地址。这个应该是个很大的数,就是内存中某个地址的值。
printf("%1d",&s1);表示输出存储字符指针变量s1的内存空间的地址。这个应该是个很大的数,也会是内存中某个地址的值。
全部回答
  • 1楼网友:傲气稳了全场
  • 2021-04-05 04:43
1. 输出字符串第一个字符
2. 输出字符地址
追问:编译的结果第一个输出:4341752
第二个输出:1245052
貌似都是地址啊
  • 2楼网友:神的生死簿
  • 2021-04-05 03:55
#include<stdio.h>
int main()
{
char*s1="abc";
printf("\n\ts1=%s(%%s)s1=%d(%%d) \n\t&s1=%s(%%s) &s1=%d(%%d)\n");
return 0;
}
运行结果为 abc 170
^ (乱码符) -12
解释:printf("%1d",s1) 代表用整型类型输出指针变量s1所指向的数据,整个数据占一列,当实际数据大于一列时,按实际长度输出。此处,s1是一个字符型指针变量,存储的是一个字符串的首地址,也就是指向了以a为首的abc ,如果用%s输出,即得到结果abc
printf("%1d",&s1)解释同上,但输出的是指针S1的值,即是s1这个指针变量本身的地址,并用整型类型输出,一般是一个16进制的地址(用2进制%d输出了)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯