给char指针赋值

给char指针赋值,c,C,我正在努力学习C,我遇到了一些字符指针,它们对我来说并没有什么意义 我见过很多人这样做: char* something = "Hi"; printf("%s", something); 我以为指针指向变量的内存地址?你不应该做像*something=Hi这样的事情吗?它很有效。在内存中,将为Hi分配3个字节:“Hi\0”,因为这意味着它是一个字符串,以0\0结尾。您想指出本节的开头,因此一些内容将包含“H”的内存地址。在printf%s中,表示将有一个字符串,该字符串以0\0结尾。print

我正在努力学习C,我遇到了一些字符指针,它们对我来说并没有什么意义

我见过很多人这样做:

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

我以为指针指向变量的内存地址?你不应该做像*something=Hi这样的事情吗?

它很有效。在内存中,将为Hi分配3个字节:“Hi\0”,因为这意味着它是一个字符串,以0\0结尾。您想指出本节的开头,因此一些内容将包含“H”的内存地址。在printf%s中,表示将有一个字符串,该字符串以0\0结尾。printf将开始显示H地址中的字符,该地址保存在something指针中,并在找到\0时结束。

字符指针指向内存的单个字节。由于字符串Hi占用的内存比单个字节多,因此char指针只保留字符串“H”中第一个字符的地址

要演示这一点,请尝试取消对指针的引用并打印它:

printf("%c\n", *something);

否则,正在使用的printf的%s选项需要一个指向字符串第一个字符的指针,并将一直打印到零字节。

char*something char*something is same我认为指针指向变量的内存地址。有东西指向Hib,但不应该是地址吗?和*something是字符串值吗?根据K&R,当使用char*something=Hi时;此表单如果您想要修改字符串,您将得到未指定的行为!!