若有声明“char a[3]= "AB"; char *p=a; ”,执行语句“printf("%d",p[2]);”后输出结果是 ?

如题所述

结果是0
因为字符串都是以\0为结尾,p指向字符串"AB",所以p[2]就是\0,\0的ASCII码是0,所以最后输出0
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-22
应该是不确定……

若有声明“char a[3]= "AB"; char *p=a; ”,执行语句“printf("%d",p...
因为字符串都是以\\0为结尾,p指向字符串"AB",所以p[2]就是\\0,\\0的ASCII码是0,所以最后输出0

.设char*p="abcd";,执行语句printf("%C",*(p+2));后的输出结果是...
设char*p="abcd";,执行语句printf("%C",*(p+2));后的输出结果是__%C__执行语句printf("%c",*(p+2));后的输出结果是__c__ (*p指针后移2个字符是'c')要记得C语言是大小写敏感的。

char s[]="abcdefg",*p=s,执行语句printf("%s",p+2)后输出的
输出:cdefg p=s=&s[0];则p+2=&s[2],即从字母c开始打印字符串。

已知char a='\\103';则语句printf("%3d",a);执行后的输出结果是
(_为空格)

C语言问题:char a[3]={'A','B','C'};printf("%d\\n",strlen(a));​...
strlen是在求字符串长度,字符串末尾都要以'\\0'为结尾,这里是a不构成一个串

...="Boss";语句printf("%d",strcmp(a,b));的输出结果是5, 为什么呢...
'x'-'s'==5 strcmp就是比较第一个不同的字符的ascii码的差

...%d\\n";int a=1,b=2; 则执行语句"printf(p,a,b);"时输出(4)_百度知...
char *p="%d,%d\\n"的意思是说:把p定义成了指向字符的指针,并让它指向了一个叫"%d,%d\\n"(不含引号)。那么p的内容就是引号中的内容(%d,%d\\n),printf(p,a,b)的意思就成了printf("%d,%d\\n",a,b)。但输出应该是1,2,不会是4吧?

若有以下程序片段: char str[ ]="ab\\n2\\\\"; printf("%d",strlen(str...
是5,"\\0"才是结束的标志。"、n"是换行符,在字符串中它还是算一个字符。strlen()是测算字符的长度的函数。所以输出的该是5。

...a[]={"ABCDE"}; char *p=a; *(p+2)+=2; printf("%s",p+1); }运...
因为p+2指向a[2],然后+=2,所以a[2]的值变为E。p+1指向a[1],输出是从a[1]开始输出字符串,所以答案是 BEDE

...语句 char *s1="12345" , *s2="1234"; printf("%d\\n" ,strlen(strc...
按照编译来说这个是错误的 因为这二个是常量 所以无法复制 为什么是4 个人认为是1234后面还有一个\\0因为系统要判断字符串的结束所以加了一个\\0 而将s2复制到s1那么就是1234\\0 那么输出结果就是4

相似回答
大家正在搜