C编程: Parameter : Can't convert to int*

标签 c arrays merge

我是新来的,我有一个问题。

我正在做关于过程和结构的 C 编程作业。

所以我想声明一个结构体数组,然后将其作为别名。这是代码:

typedef struct Mahasiswa
{
    int NIM;    
    char NamaMhs[16];
    char KodeMK[6];
    char Nilai;
}TabMhs[100];
TabMhs M; //Alias

我想使用这个结构作为另一个过程的参数:

这是程序:

void SortDataMhs(struct Mahasiswa M[Nmaks],int n);

这是过程调用:

SortDataMhs(&M,n);

但是我收到一个错误: [错误] 无法将参数“1”“void SortDataMhs(Mahasiswa*,int)”的“Mahasiswa()][100]”转换为“Mahasiswa

有什么帮助吗?很抱歉问这样一个新手问题。因为我是编程新手:)

最佳答案

这个结构体数组的声明,即:

typedef struct Mahasiswa
{
    int NIM;    
    char NamaMhs[16];
    char KodeMK[6];
    char Nilai;
}TabMhs[100];
TabMhs M; //Alias

这不是一个好的做法。您可以阅读更多相关信息here .

现在,下面的代码更具可读性和理解性:

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

typedef struct Mahasiswa
{
    int NIM;    
    char NamaMhs[16];
    char KodeMK[6];
    char Nilai;
}TabMhs;

TabMhs m[100];

void ss(TabMhs* m, int n){ // `m` is the pointer to array of structures and `n` is the number of elements in that array.
    for(int i=0; i<n ; i++){
        printf("%d\t%s\t%s\t%c\t%d\n", m[i].NIM, m[i].NamaMhs, m[i].KodeMK, m[i].Nilai, n);
    }
}

int main(){
    m[0].NIM = 0;
    strcpy(m[0].NamaMhs, "m0nama");
    strcpy(m[0].KodeMK, "m0kod");
    m[0].Nilai='a';

    m[1].NIM = 1;
    strcpy(m[1].NamaMhs, "m1nama");
    strcpy(m[1].KodeMK, "m1kod");
    m[1].Nilai='b';

    ss(m,2);

    return 0;
}

但是假设明天您的结构数组需要多于(或少于)100 个元素,在这种情况下,您可以通过删除语句 TabMhs m[100] 并将其替换为以下内容来使该数组动态化:

int main(){

    int n = 10;
    TabMhs* m = malloc(sizeof(TabMhs) * n);

    /* rest of the code remains same */

    free(m);
}

关于C编程: Parameter : Can't convert to int*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59015172/

相关文章:

c - OS X 上的 Gcc : Undefined symbols for architecture x86_64

java - 如何将 6 个整数数组与二维整数数组 [19][5] 进行比较?

c# - 使用 XDocument 不规则地写入 XML

R:使用第二个表合并+更新表的有效方法,其中来自相同列名的值填充 NA

python - 按间隔合并两个 Pandas 数据帧

c - 以这种方式包含头文件,这是一个好的做法吗?

c - 是否有非致命的等价于 c 中的断言?

c - 在 linux 集群上为特定用户安装 cmake

javascript - 如何在reactjs中制作一个页面,该页面将保留在带有动态问题和选择的页面上?

javascript - 如何指示我们确定变量的值在 Typescript 中的数组中的变量和数组的类型?