所以我试图将一个char数组传递给一个函数并将其打印出来,然后将数组返回。
以下是我的主要功能。我正在做二进制搜索树,但我只是坚持传递一个字符数组。
int main()
{
BST tree = new_bst();
int noRecords;
int tfn;
char name[10];
char *test;
FILE *fileptr;
fileptr = fopen("welfare1.txt", "r");
fscanf(fileptr, "%d", &noRecords);
fscanf(fileptr, "%s", name);
fscanf(fileptr, "%d", &tfn);
insert_bst(&tree, tfn, &name);
}
到目前为止,这是插入BST功能。我还没有实现它,因为我无法将名称字段传递给我的函数,我使用printf作为测试来查看它是否有效。
BSTNodePtr insert_bst_node(BSTNodePtr self, int n, char *name)
{
if (self == NULL)
{
TaxRecordPtr newRecord = new_record();
self = malloc(sizeof *self);
self->data = newRecord;
self->left = self->right = NULL;
printf("%c", name[0]);
}
答案 0 :(得分:0)
更改
insert_bst(&tree, tfn, &name);
到
insert_bst(&tree, tfn, name);
除非它是sizeof
或一元&
运算符的操作数,或者是用于在声明中初始化字符数组的字符串文字,否则表达式为“N-elemement array of of T
“将被转换(”衰减“)到”指向T
的指针“类型的表达式,表达式的值将是数组的第一个元素的地址。
致电时
insert_bst(&tree, tfn, name);
表达式name
不是sizeof
或一元&
运算符的操作数,因此它“衰减”到char *
类型,它匹配的类型函数定义中的参数。
致电时
insert_bst(&tree, tfn, &name);
表达式name
是一元&
运算符的操作数,因此转换不会发生;相反,表达式的类型是char (*)[10]
,或“指向char
的10元素数组的指针”,它与函数定义中的参数类型不匹配。
答案 1 :(得分:-1)
char数组相当于指向char的指针。 因此,当引用char数组时,所需的类型将是char
的双指针BSTNodePtr insert_bst_node(BSTNodePtr self, int n, char **name)
无论如何,没有必要将指针传递给char数组,你可以只传递char数组
insert_bst(&tree, tfn, name);
你不会按值传递char数组,因为数组等同于指针。