无法通过将指向数组的指针地址作为函数的参数来传递某些数组数据

问题描述

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;
}

解决方法

在此次通话中

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

表达式*b[1]的类型为char,而转换说明符s的类型为char *的参数

所以你应该写

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

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