C 复制指针数组并打印副本

C 复制指针数组并打印副本,c,arrays,C,Arrays,我试图复制数组的指针并打印复制数组中的值,但我遇到了一个分段错误 void kosomo(char * test[10]) { int j=0; char * test2[10]; while (test[j] != NULL) { test2[j]=&test[j]; // test[j] is the string, so with & it's the address

我试图复制数组的指针并打印复制数组中的值,但我遇到了一个分段错误

void kosomo(char * test[10]) {
        int j=0;
        char * test2[10];
        while (test[j] != NULL) {
                test2[j]=&test[j]; // test[j] is the string, so with & it's the address
                j++;
        }

        printf("%d ",*test2[0]); // trying to do * in order to print the string
}


int main() {
        char * test[] = {"abc","def",NULL};

        kosomo(test);
}

如果这个程序能帮助你,请尝试一下。我假设您想要打印整个字符串数组

#include <stdio.h>

void kosomo(char *test[10]) {
    int j = 0;
    char *test2[10];
    while (test[j] != NULL) {
        test2[j] = test[j]; 
        j++;
    }
    test2[j] = NULL;
    j=0;
    while (test2[j] != NULL) {
        printf("%s ", test2[j]);
        j++;
    }
}

int main() {
    char *test[] = {"abc", "def", NULL};
    kosomo(test);
    return 0;
}

测试[j]是一个字符*&测试[j]是一个字符**。您正在尝试将其分配给char*类型的变量。编译器应该警告您。test2[j]=&test[j];->test2[j]=test[j];,printf%d,*test2[0];->printf%s,test2[0];您混淆了字符串和指向char的指针数组。例如,您从一个包含三个字符串的数组开始,参数定义中的[10]是不必要且不合逻辑的,然后尝试只打印其中一个字符串?不清楚你到底想做什么。
abc def