给char指针赋值

时间:2015-01-17 14:19:12

标签: c

我正在努力学习C,而且我遇到过char指针,这对我来说真的没有意义......

我见过很多人这样做:

char* something = "Hi";
printf("%s", something);

我认为指针指向变量的内存地址?你不应该做* something =“嗨”吗?

2 个答案:

答案 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选项(您正在使用的那个)需要一个指向字符串第一个字符的指针,并将打印直到它到达零字节。