【发布时间】:2019-08-06 03:45:55
【问题描述】:
我正在尝试编写代码来为结构数组动态分配内存。我想将与堆内存空间关联的指针传递给另一个函数以供进一步使用。以下代码示例是我想要做的一个粗略示例(为简洁起见):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/sha.h>
#include <time.h>
struct password_struct;
void create_password(char password_seeds[], struct password_struct* user_passwords);
void main() {
char password_seeds[100];
int num_passwords = 5;
struct password_struct {
char password[17];
char hash[65];
int entropy;
};
struct password_struct *user_passwords = malloc(num_passwords * sizeof(struct password_struct));
create_password(password_seeds, user_passwords);
free(user_passwords);
}
void create_password(char password_seeds[], struct password_struct* user_passwords){
}
当我尝试编译它时,我收到以下错误:
In function ‘main’:
c:24:5: warning: passing argument 2 of ‘create_password’ from incompatible pointer type [enabled by default]
create_password(password_seeds, user_passwords);
^
c:8:6: note: expected ‘struct password_struct *’ but argument is of type ‘struct password_struct *’
void create_password(char password_seeds[], struct password_struct* user_passwords);
^
这似乎为实际和预期的指针类型列出了相同的指针类型。任何帮助将不胜感激。
【问题讨论】:
-
为什么要在
main()里面定义struct?
标签: c arrays pointers struct compiler-errors