char *s="abcde"
发布网友
发布时间:2024-10-03 00:37
我来回答
共4个回答
热心网友
时间:2024-11-20 14:46
(1)
指针本来是指向字符串的首地址a的,+2后指向c,故输出:c
(2)
同理,由于是输出字符串,所以直到 '\0'为止,故输出:cde
(字符串都是以'\0'结束的,复制的时候虽然没有'\0',但是系统会自动给加上这个的,这是字符串结束标志)
(3)
同理,指向c,但是要输出整形,故读取c所占字节内容,c的ascII码为99,故即输出:99
(由于前面定义的指针p为字符型的,故即便是整形输出,也只读一个字节的内存)
希望能帮到你!~
热心网友
时间:2024-11-20 14:47
它可以当成数组来用,但是它比数组多了一个特性,那就是它可以被改变。
例如:char
a[10]="abcde"
表明a是一个数组,a表示的也是个地址,但是数组名表示的地址是个常量地址,是不能被改变的,例如出现a=...的赋值语句就错了,而对于你说的:char
*s
=
"abcde",s也是个地址,但是是个变量,是可以改变的。
热心网友
时间:2024-11-20 14:47
1 s刚开始指向abcde这个字符串的首地址(也就是a),
s+=2后,s指向了c;输出后会打印c(因为%c是输出字符);
2 同上,输出后会打印cde(因为%s是输出字符串);
3 同上,输出后会打印99,好像是这个数,我也忘了,反正是一个整数(因为%d是输出整形);
热心网友
时间:2024-11-20 14:48
s指向a字母对应地址,加2后指向c对应地址
那么
1输出的是字母c
2输出的是字符串cde
3输出的是字符c的ascii码