0

b 数组存储包含单个字符值的 a 数组的地址。但是通过调用 fun 函数,我希望每个b数组元素都可以包含字符串(多字符)值。

假设我想通过将数组指针的地址作为参数传递给fun函数来更改数组中的 * b[1]值。但是编译后出现分段错误。如何解决?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void fun(char **x)
{
    strcpy(*x,"aaa");
}

int main(void)
{
    int itr;
    char a[5]={'a','b','c','d','e'};
    char *b[5] ={&a[0],&a[1],&a[2],&a[3],&a[4]};
    char *c[5]={"ab","cd","ef","gh","ij"};

    for(itr=0;itr<5;itr++)
    {
        printf("%c\t",a[itr]);
        printf("%c\t",*b[itr]);
        printf("%s\n",c[itr]);
    }
    fun(&b[1]);

    printf("%s\n",*b[1]);

    return 0;
}
4

1 回答 1

1

在这次通话中

printf("%s\n",*b[1]);

表达式*b[1]具有类型char,而转换说明符s需要该类型的参数char *

所以要么你应该写

printf( "%c\n", *b[1] );

或者

printf( "%s\n", b[1] );
于 2020-09-24T18:26:16.290 回答