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
关键字禁止在 运行 之后更改该指针。
我正在尝试理解以下代码:
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
关键字禁止在 运行 之后更改该指针。