关于c语言中指针操作字符串和指针取值的问题

intmain(intargc,charconst*argv[]){//问题一:问什么第一种可以,第二种却不行呢?charbuf[]={'t','e','\0'};pri... int main(int argc, char const *argv[])
{
// 问题一:问什么第一种可以,第二种却不行呢?
char buf[]={'t','e','\0'};
printf("%s\n",*(buf+1)); // 没有输出结果

int arr[3]={1,2,3};
printf("%d\n",*(arr+1));// 输出2

// 问题二:问什么第一种可以,第二种却不行呢?
int a=12;
int *p1=&a;
printf("%d\n",*p1); // 输出12

char buf[]="test";
char *p=buf;
printf("%s\n",*p); // 没有输出结果

}
展开
 我来答
zhj__1989
2018-08-26 · TA获得超过292个赞
知道答主
回答量:40
采纳率:100%
帮助的人:16.3万
展开全部
问题一里,如果你想打印字符串,printf第二个参数应该是地址而不是地址里的内容,
如果你想打印一个字符,应该是%c而不是%s
应该写为printf("%s\n",(buf+1)); 或者 printf("%c\n",*(buf+1)); (输出是e)
问题二和一应该是同样的错误
printf("%s\n",p);是打印整个字符串'test'
如果你只打印一个字符,比如s
printf("%c\n",*(p+2));
ajsoabk
2018-08-26 · TA获得超过150个赞
知道答主
回答量:2
采纳率:0%
帮助的人:1635
展开全部

printf输出字符串需要传入的参数应是你想要开始的地址,把buf+1前面的解引用(*)去掉即可

*(buf+1)传递的是值应该用于输出字符的情况,如printf("%c\n",*(buf+1));

第二个同理;

推荐一本c语言语法书,c prime plus ,对于这种基本语法解释的相当清楚

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式