我正在尝试运行这个管理登录的程序,但是我在将这个指针声明为全局变量时遇到了问题,它向我显示的错误是
“初始化元素不是常量”
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char nom_utilisateur[20];
char mot_de_passe[20];
char nom[20];
char prenom[20];
}USER;
USER *u =(USER *)malloc(sizeof(USER)*20);
int nbr_usr=0;
void adduser() {};
......
在 C 中,您不能在全局变量初始化期间调用函数。
您需要在 main
中进行初始化:
...
USER *u;
...
int main()
{
u = malloc(sizeof(USER)*20);
...
}
顺便说一句:
- 您不需要强制转换
malloc
的结果。
- 变量名
u
不是个好主意。给它一个有意义的名字,例如用户
。
与您的问题没有直接关系,但请注意下面结构声明中的 20
与 malloc(sizeof (用户)*20)
。
typedef struct {
char nom_utilisateur[20];
char mot_de_passe[20];
char nom[20];
char prenom[20];
} USER;
在此struct
声明中,20
表示每个用户的密码、nom、prenom 等的长度最多为19,19 是因为字符串以NUL 结尾。
malloc(sizeof(USER)*20)
中的20
表示您最多可以有 20 个用户。