运行此代码时,出现以下错误:
[错误]下标值既不是数组也不是指针也不是向量

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

/*Defined a data type named User with typedef*/
typedef struct User{
    char firstName[50];
    char lastName[50];
    int phonenumber;
}user;


int main(int argc, char *argv[]) {

    user users[2];/*users defined "user" type*/

    strcpy(users[0].firstName,"furkan");

    strcpy(users[1].lastName,"xxxx");

    users[0].phonenumber = 1;

    users[1].phonenumber = 2 ;

    print_users(users);

    return 0;
}

/*Function for printing user type users values*/
void print_users(user usr)
{
    int j=0;

    for(j=0;j<10;j++)
    {
        printf("%-10s%-20s%7d\n",usr[j].firstName,usr[j].lastName,usr[j].phonenumber);
    }
}

我可以在不使用typedef的情况下实现这个函数,但是我想知道是否有办法实现这个功能

最佳答案

void print_users(user *usr)

这应该是函数接收的参数,因为在函数内部,您正在访问usr[j],所以这意味着usr需要是指针,而不是结构本身。
啊,就是说,你的for从0到9(10个职位),你只分配了2个职位。

关于c - 将typedef结构作为参数传递给函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41511667/

10-15 06:04