char a[]=”language”, *p;
p = a;
while( *p != 'u') { printf("%c", *p - 32); p++; }
A.LANGUAGE
B.language
C.LANG
D.langUAGE
问题描述:*p != 'u'这个不是表示p指向指针不等于u吗,那答案里没有啊
你要先看懂代码,再去理解答案,不要着急说答案里没有
首先,p是一个char指针
它指向什么呢
是char数组的地址,那么其实它最终指向的是数组a里的一个char
*p其实就与a[i]是等价的,注意程序里没有i,最初它是0,随着p++,它会变,所以相当于有个i
知道了这个,那么while(*p!='u')其实就等价于for (i=0;a[i]!='u';i++)
那么也就是说,当循环执行到lang,下一个字母是u,循环就停止了
再看print里做了什么,它把*p的值减去32,也就是a[i]-32,其实就是把小写变大写
那么输出的其实就是LANG,答案C
循环打印 p指向字符数组首地址 *p=l
”language ” 串里面 有个字符 ‘u’ 当遍历字符数组到 ‘u‘时 循环结束 打印每个字符 -32的anscii码对应的字符 就是转换大写