我正在编写一个程序,我需要初始化一个保存文本的消息缓冲区。我能够使它工作,但是我正在编写以下用于初始化 C 中的字符串的各种方法,我想了解其中的区别。wchar_t
另外,初始化/char
字符串最合适的方法是什么?
方法一:
wchar_t message[100];
根据我的理解,这将分配 200 字节的内存空间(我认为wchar_t
在 Windows 操作系统上的大小为 2 字节)。此内存分配是静态的,它将在编译时在可执行文件的 .data 部分内分配。
message 本身也是一个内存地址,它指向字符串的第一个字符。
这种初始化字符串的方法对我很有用。
方法二:
wchar_t *message;
message=(wchar_t *) malloc(sizeof(wchar_t) * 100);
此方法将首先将变量 message 初始化为指向wchar_t
. 它是一个宽字符数组。
接下来,它将为这个字符串动态分配内存。我想我已经正确地编写了它的语法。
当我在我的程序中使用此方法时,它不会读取字符串中空格后的文本。
Example text: "This is a message"
它只会将“This”读入变量消息中,之后不会出现任何文本。
方法三:
wchar_t *message[100];
这会将 message 定义为 100 个宽字符的数组和指向wchar_t
. 这种初始化消息的方法效果很好。但是,我不确定这是否是正确的方法。因为 message 本身指向字符串中的第一个字符。那么,用大小初始化它,对吗?
我想更深入地理解它,初始化字符串的正确方法。同样的概念也可以扩展到字符串。