1

我是 C 新手,所以这个问题可能听起来很愚蠢。我总是有一个长度为 2 的 const char* 变量。现在我需要将它传递给一个结构变量。struct 变量应该是一个 char 数组 [2](因为它总是只需要两个字节)还是一个 char*。我问的原因是,使用 char* 将为指针创建空间(4 字节或 8 字节),但我真的只需要 2 字节。最好的方法是什么?如果使用 char array[] 是更好的方法,我应该使用 strcpy 将 char* 变量复制到 char array[] 吗?

4

2 回答 2

5

如果您确信它始终是 2 个字节,那么使用数组就没有问题。只是总是使用strncpy和朋友来确保你不会超支。请记住使其长度为 3 个字节以容纳空字符。您可以获得指向数组的指针以用于读取目的,并且其行为与char*to malloced 内存相同。

于 2013-10-04T15:45:42.953 回答
0

“我总是有一个长度为 2 的 const char *变量。现在我需要将它传递给一个结构变量”

如果您知道字符串的长度始终为 2,那么使用固定大小为 3 的数组(包括一个空终止字符)是完全合理的:

struct myStruct {
    char code[3];
};

在某处:

struct myStruct m;
const char* src = "ab"; 
strncpy(&myStruct.code[0], src, 3);

但如果你不能确保长度src不超过 2,你最好这样做:

strncpy(&myStruct.code[0], src, 2);
myStruct.code[2] = '\0';
于 2013-10-04T15:47:03.523 回答