请问c语言中 char *s=“abcde”; s+=2;
printf(“%d”,s); 的运行结果是什么?
答案是字符c的地址,但是%d为什么会是地址呢?
这里你要了解几个知识点
1:c语言字符串的概念,实际上就是字符串的首地址,然后一直存数据,直到遇到终结符\0。
2:存储字符串的方式,char *的方式和char数组的方式。
然后你理解这个问题。
这里的s实际上就是一个指针,指向的是字符串的首地址。 你如果按字符串处理,就是从这个地址开始输出字符串(%s),而你把他当数值处理,当然就直接输出的是一个值了,地址的输出其实用%p更好。
因为s就是地址,地址的值也是int的,只是它是16进制
答案是字符c的地址,但是%d为什么会是地址呢?
因为地址也可以是整形,变量是指针,所以打印是地址
s代表字符串首地址,s+2意味着字符串地址位移2位,输出时,传人的s也是地址
你这个应该是错的,char返回的怎么会是%d?
你运算的结果就是错的。
地址 是以int类型存储的,*s才是c字符,s是个指针,指针里的值就是地址
数组名是第一个元素的地址