1

我试图理解以下代码:

const TCHAR * portName = "COM15";

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

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

那么那行代码中实际发生了什么?

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

4

2 回答 2

2

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

对,就是这样。但是,除了您可能预期的问题之外,这发生在程序编译时,而不是在运行时。该const关键字还禁止稍后在运行时更改该指针。

于 2015-01-10T19:30:10.320 回答
1

这是 C 的工作方式:

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

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

于 2015-01-10T19:29:38.510 回答