char *a=china;d等价于char*a;*a=china?
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/24 23:37:02
前者为7个字符,ABCDEF空字符后者为6个字符:ABCDEF
C是正确的.charx[]="abcdefg"等价于charx[]={'a','b','c','d','e','f','g','\0'}所以x长度比y多一.再问:是隐藏了一个吗再答:可以说隐藏的吧,就
;q++;}字符串结尾是'\0'*q!='\0'--当字符串未到结尾时,不断循环执行--该字符的ASCII值增加1,指针值增加1,即指到下一个字符.main();funl(a);printf("%s"
acX是字符串系统最后添加"\o"作为结束符acY是数组没有结束符
strcat(p,r);后p="abcdabcde"strcpy(p+strlen(q),q);后p的第7位是'\0'p="abcabc"当然是6
a[5]是表示'\0',但是'\0'对应的ascll码是0,在ascll码表中前32号(0~31)ascll码代表的字符是控制字符(如换行符就在这范围内),不属于可打印字符,因此即使a[5]打印出来是
chara[10],*p;p=a="china";是错的赋值!~原因:char*p;p="china";这里的p是在静态区分配的内存,也就是说p是指向字符常量的指针.而在p=a="china";中,"
//答案是:d9,8//但程序有错误,正确有是:#include#includevoidmain(){chara[]={'a','b','c','d','e','f','g','h','\0'};in
q[]="abc";strlen(q)为3,p+strlen(q)指向p+3,就是p[3],strcpy(p+strlen(q),r);就是把r[]="abcde"复制到p[3]开始的以后那些单元里,
B不正确,“a”是赋值给字符串的,不能给一个字符这么赋值,其他都可以的.
这是因为:x=(char)a;将a强制转换后,符值,而a=1234,即0x04d2,高字节为04,低字节为d2,char型为1字节,所以取低字节d2,而X为int型,所以再32位系统中分给它的是4字节
a=0x04d2(16进制)x=0xd2(char的长度是2个byte)=11010010(2进制,补码表示),最高位1是符号位,表示负数x=-2^7+2^6+2^4+2^1=-46
要是你想赋值字符8的话得用‘8’(单引号)否则8就表示数字8再问:为什么呀?系统能识别吗?那为什么像这个判断语句:while(s!=0)中0代表的不是数字0,而是'\0'?再答:'\0'
,dchar*p=(char*)(&a+1);把a当成一个数据结构4个字节,所以p是在'd'后面的一个字节位置再问:*p=(char*)(&a+1)char*p=(char*)(&a+1);他们分别是
//1程序有3个错误,改正如下:#includevoidfun(char*a,char*b)//C的参数传递为值传递,改变a的值不会反馈到实参.{\x05a=b;//少分号!}voidmain(){\
正确的是CA肯定是错的,char*a;那么*a就是a[0]只能给它赋值一个字符而不是字符串,但由于a没有被赋值,所以也不能对*a赋值B也是错的,str[]只能是在声明时这么用,其它在其它地方出现[]中
chara[]="china";是定义了一个数组,[]内如有数字代表数组元素个数.char*a=NULL是定义了一个指针.具体区别你查一下数组和指针的区别就可以了,不是一句话的事,好好看吧.再问:那c
我在想你这问题每一个选项都没分号,如过有分好的话A对了,虽然没有初始化,也不会出现错误,B的话越界了想赋值“12345”,应该定义六个元素的数组,因为字符串后面会有‘\0’,C中char写错了,D中s
B再问:怎嘛理解能不能讲一下解题思路谢谢再答:p=a;是将a的首地址赋给指针p,所以p就表示数组a的首地址,也就是a[0]的地址,p+4就表示存放a[4]的地址,前面加一个*,就是取值运算,取a[4]
|&是按位运算4|3=00000100|00000011=00000111=74&3=00000100&00000011=00000000=0