TCHAR 指针初始化

TCHAR pointer initialization

我正在尝试理解以下代码:

const TCHAR * portName = "COM15";

我知道 TCHAR 是一个 Char(在 ANSI 中)或一个 wChar(在 Unicode 中),基本上是一个 1 字节或 2 字节的容器,代表一些东西。

现在,如果我声明一个指向名为 portName 的 const TCHAR 的指针,那么 portName 就是一个指针。当我使用“=”符号时,我给了那个指针一个值,"COM15" 将是地址,这对我来说似乎是不合理的。我假设那行代码给我一个指向 "COM15" 字符串开头位置的指针,对吗?

那这行代码到底发生了什么?

是否正在创建一个字符串 ("COM15") 并且“=”符号实际上意味着该字符串的开头位置正在被提供给 portName?

这是 C 的工作原理:

当你在 C 中说 char * str1 时,你是在内存中分配一个指针。当你写 str1 = "Hello"; 时,你正在内存中创建一个字符串文字并使指针指向它。

当您创建另一个字符串文字 "new string" 并将其分配给 str1 时,您所做的只是更改指针指向的位置。

"Is a string of characters ("COM15") being created and the "=" sign actually means that the location of the beginning of that string is being given to portName?"

是的,没错。但是,除了您的问题听起来像您所期望的那样,这种情况发生在程序编译时,而不是在 运行 时间。此外,const 关键字禁止在 运行 之后更改该指针。