prss.net
当前位置:首页 >> 执行语句ChAr s[3]="Ch",*p; p=s;则*(p+2)的值是什... >>

执行语句ChAr s[3]="Ch",*p; p=s;则*(p+2)的值是什...

数组s由三个元素'c'、'h'和'\0'组成,p+2指向s[2]的位置即结束标记'\0'。

*(p+1)='b' p=s; //指针p指向了字符数组s,亦及p指向了数组的首元素*(p+1); /*(p+1),则p指向了数组的第2个元素,然后通过指针运算符*来访问该存储单元的值,即字符'b',所以*(p+1)的值是'b'。*/

*(p+1)的值是 b 步骤:s是个char数组,所以s[0] = "a",s[1] = "b", s[2] = "\0"; p是指针,它指向s的首地址.所以*(p+1) 就相当于是去拿s[1]的值.所以是 "b"

字符串结束符号'\0' char s[3] = "ab"; s[0]='a' s[1]='b' s[3]='\0' p = s 指针后移两位所以就是'\0' 如果还不是很明白的话,百度搜索下 字符串结束符

p=s后,p指向'A',+1指向'B',+2当然指向字符串结束符,就是'\0' 选B

估计你应该是二维数组与指针分不清楚,分析如下: char s[3][10]; //先看s[3],s包含3个元素的数组,即s为指向3个元素的指针,3个元素分别为s+0,s+1,s+2; 再看右边的[10],说明这个3个元素中,每个元素又包含10个元素,即(s+0)[0]、(s+0)[1].......

p=s;指针p指向s数组的首地址,输出字符串%s时,从9开始,输出整个字符串9876 p++后,p=s+1;指针p指向了s+1,指向了9876的8,输出字符串%s时,从8开始,输出876 再p++后,循环条件不成立,跳出循环,程序结束 所以,输出 9876 876

你可以这样理解,把char *看作一部分,p表示s[81]的指针,而s可以表示s[81]的首地址, p[i]表示指向这个地址空间的值,如果用*p[i]就表示指针的指针了,即表示p[i]这个地址指向的值所指向的地址。

输出是d。 解释如下: p=s,之后,p和s指向同一个地址。 printf("%c\n",*p+1); 这句话的意思是输出*p+1对应的字符,首先计算*p,也就是数组s的首字母,既s[0],既字母c。字母c+1的意思就是c的下一个ASCII码字符,也就是小写字母d。 最终输出就是...

A——p是char *型,s是char (*)[10]型,二者类型不匹配,错。 B——p是char *型,k是char (*)[3]型,二者类型不匹配,错。 C——p是char *型,s[0]就是&s[0][0],也是char *型(&s[0][0]是第0行第0个元素的地址),正确。 D——k是char (*)[3]型,s是char ...

网站首页 | 网站地图
All rights reserved Powered by www.prss.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com