我想了解以下代码:
const TCHAR * portName = "COM15";
据我所知,TCHAR是Char(在ANSI中)或wChar(在Unicode中),基本上是一个1字节或2字节的容器来表示某些东西。
现在,如果我声明一个指向名为portName的const TCHAR的指针,那么portName就是一个指针。当我使用“=”符号时,我给该指针一个值,对我来说似乎是不合理的,“COM15”将是地址。我假设代码行给了我一个指向“COM15”字符串开头位置的指针,对吗?
那么代码行中究竟发生了什么?
是否创建了一个字符串(“COM15”),而“=”符号实际上意味着该字符串的开头位置是否被赋予portName?
答案 0 :(得分:2)
"正在创建一个字符串(" COM15")并且" =" sign实际上是指该字符串开头的位置是否被赋予portName?"
是的,确切地说。但是,除了你可能已经预料到的问题之外,在编译程序时会发生这种情况,而不是在运行时。此外,const
关键字禁止稍后在运行时更改该指针。
答案 1 :(得分:1)
C的工作原理:
当你在C中说char * str1
时,你正在内存中分配一个指针。当你编写str1 = "Hello";
时,你正在内存中创建一个字符串文字并使指针指向它。
当您创建另一个字符串文字"new string"
并将其分配给str1
时,您所做的只是改变指针指向的位置。