我正在尝试创建一个可以创建结构数组的代码。我还处于早期阶段,我试图将结构传递给一个函数,虽然我认为指针必须是utitlized,但我无法弄清楚如何正确地完成它。这是我的代码。
$scope.searchContacts = function(term) {
console.log(term)
$scope.contacts = $scope.contacts.filter(function(contact) {
var name = contact.name.toLowerCase();
if(name.indexOf(term.toLowerCase()) > -1) {
return true;
}
});
};
答案 0 :(得分:2)
请记住阵列的名称"衰变"到指向其第一个元素的指针。因此,在您的情况下,只需使用record
来传递"数组" (你无法真正传递数组)到函数。您还需要将函数参数类型更改为struct info*
,因为record
的类型为struct info*
。
以下是带有更改注释的工作代码:
#include <stdio.h>
struct age{
int num;
};
struct name{
char fname[15];
char lname[15];
struct age nameAge;
};
/*void input(struct name *info[]); Note the change in the declaration */
void input(struct name *info);
int main (void){
char choice;
char ans;
int i;
struct name record[10];
do{
printf("M E N U");
printf("\n\n[I]nput\n[D]isplay\n[S]earch\n[Q]uit");
printf("\n\nEnter choice: ");
choice=tolower(getche());
system("cls");
switch (choice){
case 'i': input(record); /* Note the change here as well */
i++;
break;
case 'd': //function here
break;
case 's': //fucntion here
break;
case 'q': printf("The program will now close.");
break;
default: printf("Invalid character. Try again");
break;
}
getch();
system("cls");
}while (choice!='q');
return 0;
}
void input(struct name *info){ /* Note the change here in the function definition too */
//codes here
}
答案 1 :(得分:1)
更改函数定义和实现以及函数调用(如果要使用数组)
void input(struct name info[]);
...
input(record);
或者使用指针(也可以使用数组作为参数)
void input(struct name *info);
...
input(record);
答案 2 :(得分:1)
您不希望为输入函数执行此操作void input(struct name *info[]);
。您希望将对数组中的某个信息结构的引用传递给该函数,因为您一次只能编辑一个信息。
因此,您更改的函数将为void input(struct name *info);
,您可以使用input(&record[i]);
来调用它,它会提供记录i的地址。您还需要初始化i,因为您从未将其设置为0,而是煽动它。
答案 3 :(得分:1)
另一个建议......
使用记录计数器.... - 每次要添加记录时都必须调用例程。 (我编写了代码,因此您向例程发送指向单个记录结构的指针,而不是传递整个结构。)
#include <stdio.h>
struct age{
int num;
};
struct name{
char fname [15];
char lname[15];
struct age nameAge;
};
// void input(struct name *info[]);
void input(struct name *info);
int main (void){
char choice;
char ans;
int i;
int n_records=0;
struct name record[10];
do{
printf("M E N U");
printf("\n\n[I]nput\n[D]isplay\n[S]earch\n[Q]uit");
printf("\n\nEnter choice: ");
choice=tolower(getche());
system("cls");
switch (choice){
case 'i': input(&record[n_records]);
i++;
nrecords++;
break;
case 'd': //function here
break;
case 's': //fucntion here
break;
case 'q': printf("The program will now close.");
break;
default: printf("Invalid character. Try again");
break;
}
getch();
system("cls");
}while (choice!='q');
return 0;
}
// void input(struct name *info[]){
void input(struct name *info){
//codes here
}