问题描述
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] );