C语言二级问题
解决时间 2021-12-23 05:44
- 提问者网友:抽煙菂渘情少年
- 2021-12-22 09:06
#include
main()
{
char s[]="ab\'cdefg\'",*p=s+1;
printf("%c\n",*(p++));
printf("%s\n",p+2);
}
printf("%s\n",p+2); *p=s+1=b *(p++)=b *p=' p+2移两位不就等于d了么? 为什么在VC6中得 defg'
先谢谢各位大侠了,由于小弟得提几十道这样的问题。。。只能给5分了,,不过好的回答我还是会追加的。。。
最佳答案
- 五星知识达人网友:痴妹与他
- 2021-12-22 09:44
*(p++) 是解引操作,所以输出的是当前指针所指的那个字符。
而p+2则是从当前指针所指的位置开始把字符输出。
所以*(p++)输出的是b,而p+2是从d开始把数组的字符输出,既是从d开始输出,所以结果是defg'
全部回答
- 1楼网友:几近狂妄
- 2021-12-22 12:37
printf("%s\n",p+2);这个是输出从d到最后所有的字符串。
如果你想输出单个字符d,那就这样写:printf("%c\n",*(p+2));
- 2楼网友:梦中风几里
- 2021-12-22 12:14
试着做个小型系统什么的,这样学着会有目的性而且进步会很快,但是这样学不是很系统,建议先看一遍书掌握基本语法会更好,祝你成功。
%s是字符串,从d开始一直到最后的一串字符……
- 4楼网友:琴狂剑也妄
- 2021-12-22 11:26
%s 是用来输出一个字符串的,*p=' p+2表示的是输出字符串的起始位置
s1,s2是指针,加二后指针后移两个字节,此时s1指向字符串为"bDeG",s2指向字符串为"bdEg",然后strcmp,结构就很明白了
我要举报
大家都在看
推荐资讯