gpt4 book ai didi

c - C中的字符串初始化

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:29 25 4
gpt4 key购买 nike

我正在使用字符串编写插入排序。我有像这样的字符数组:

 char array1[4] = {'a', 'b', 'c', '\0'};
char array2[4] = {'b', 'd', 'e', '\0'};

我需要使用这个操作:

char string[2];
string[1] = array1;
string[2] = array2;

这可能吗?

因为在插入排序中我需要一个字符串。这是插入代码:

char* insertionsort(char* a, int n) {
int k;
for (k = 1; k < n; ++k) {
int key = a[k];
int i = k - 1;

while ((i >= 0) && (key < a[i])) {
a[i + 1] = a[i];
--i;
}

a[i + 1] = key;
}

return a;
}

最佳答案

So I need to write this operation :

char string [2];
string[1] = array1;
string[2] = array2;

Is it possible ?

简短回答:不,不是。数组不可赋值。您可以使用 strcpy 将元素从一个字符串复制到另一个字符串,但在这种情况下也不起作用——您已将 string 定义为一个包含 2 个元素的数组字符,但您正试图为每个字符分配一个完整的字符数组。

目前还不完全清楚这是否是您想要的,但一种可能性是:

char *string[2];
string[1] = array1;
string[2] = array2;

在这种情况下,string 是一个包含两个指向 char 的指针 的数组,赋值将它们设置为指向您之前定义的每个字符串的第一个字符。

由于您已将其标记为 C 和 C++,因此我将对此进行一些补充:这是用 C 代码编写的。如果您实际使用的是 C++,您可能需要更像这样的东西:

std::string[2] = {"abc", "bde"};

即使在 C 中,我也更愿意在有意义的地方初始化和使用字符串常量:

char array1[] = "abc";
char array2[] = "bde";

char *string[] = {array1, array2};

甚至只是:

 char const *string[] = {"abc", "bde"};

关于c - C中的字符串初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13023493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com