注册 登录
编程论坛 C语言论坛

typedef char ElemType[N]的理解问题。

YoleBooM 发布于 2021-08-30 21:49, 1747 次点击
程序代码:

#define N 6
#define MAX_SIZE 100
typedef char ElemType[N]

typedef struct
{
     ElemType data;
     int cur;
}SLinkList[MAN_SIZE];

int main(void)
{
    SLinkList s = {"BCCN",1};
    printf(" %s ", s[0].data )
    return 0;
}

/*

 我现在不理解,ElemType[N]是char型,那么ElemType是不是就是数组地址呀,在定义结构体变量ElemType data的时候,应该怎么理解?因为没加[N],那data是什么?
*/N
2 回复
#2
我善治鬼2021-08-30 23:32
等于一个没有初始化的数组char data[N], 等于一个char*指针, 这样定义没有什么意义的, 依然不能进行类型判断,
应该定义为一个结构
typedef struct { char data; } ElemType[N];


[此贴子已经被作者于2021-8-30 23:49编辑过]

#3
自由而无用2021-08-31 07:12
//online parser: https://www.bccn.net/run/
程序代码:
#include <stdio.h>

#define M 6
#define N 32
#define MAX_SIZE 100

typedef char ElemType[N];

typedef struct
{
     ElemType data[M];
     int cur;
}SLinkList[MAX_SIZE];

int main(int argc, char *argv[])
{
    SLinkList s = {{"BCCN", "c language yyds",
                    "baobao zhen ke ai!"}, 1};
   
    puts((&s[0])->data[0]);
    puts((&s[0])->data[1]);
    puts((&s[0])->data[2]);
   
    return 0;
}
#4
rjsp2021-08-31 09:04
typedef char ElemType[N];

typedef struct
{
     ElemType data;
     int cur;
}SLinkList[MAX_SIZE];
其完全等同于
typedef struct
{
    char data[N];
    int cur;
} SLinkList[MAX_SIZE];
1