我正在努力学习C,而且我遇到过char指针,这对我来说真的没有意义......
我见过很多人这样做:
char* something = "Hi";
printf("%s", something);
我认为指针指向变量的内存地址?你不应该做* something =“嗨”吗?
答案 0 :(得分:1)
有效。在内存中,3字节将被分配给"嗨":'' i' \ 0''' \#39; \#39; "表示它是一个字符串,以0(\ 0)结尾。而且你想指出这些部分的开头,所以"某事"将包含' H'的内存地址。在printf()中,%s表示你将有一个"字符串",它以0(\ 0)结尾。 printf将开始显示H地址中的字符,该地址保存在""指针并在\ 0找到时结束。
答案 1 :(得分:1)
char指针指向单个字节的内存。由于字符串"Hi"
占用的内存多于单个字节,因此char指针只保存字符串'H'
中第一个字符的地址。
为了证明这一点,请尝试取消引用指针并打印它:
printf("%c\n", *something);
否则,printf的%s
选项(您正在使用的那个)需要一个指向字符串第一个字符的指针,并将打印直到它到达零字节。