A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cjfire 中级黑马   /  2014-9-24 11:45  /  2412 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 cjfire 于 2014-9-24 14:40 编辑
  1. #define MAXSIZE 100;
  2. #define OK 1
  3. #define ERROR 0
  4. #define TRUE 1
  5. #define FALSE 0

  6. typedef int Status;
  7. typedef int ElemType;
  8. typedef struct{
  9.     ElemType data;
  10.     int cur;
  11. }Component,StaticList[MAXSIZE];
复制代码

这里定义的是什么意思呢?而且还报错,某书上的源码,不知道为什么?请大神解释一下

14 个回复

倒序浏览
不好意思,结构体的原文是这样的
  1. struct{
  2.     ElemType data;
  3.     int cur;
  4. }Component,StaticList[MAXSIZE];
复制代码

没有那个stru主要是这里不太懂。
回复 使用道具 举报
第一行末尾多了一个分号
回复 使用道具 举报
一、结构体的定义
1、定义形式
struct  结构体名称)
{
        类型名 成员名1;
        类型名 成员名2;
        ……
        类型名 成员名n;
};

2、举例——定义一个名为Stru的结构体,共有data、cur两个成员;
//
struct Stru{
        ElemType data;
        int cur;
};
//

二、结构体变量的定义
1、先定义结构体类型,再定义变量
//
struct Stru{
        ElemType data;
        int cur;
};

struct Stru stu;
//

2、定义结构体类型的同时定义变量
//
struct Stru{
        ElemType data;
        int cur;
}stu;
//

3、直接定义结构体类型变量,省略类型名
//
struct {
        ElemType data;
        int cur;
}stu;
//
三种方式都是一样的效果,只是在某些应用不一样。


回复 使用道具 举报
首先,#define MAXSIZE 100;这里多了一个分号。其次,定义的变量Component是系统自有变量,不能重定义,改成component就好了。
回复 使用道具 举报
fantacyleo 发表于 2014-9-24 12:15
第一行末尾多了一个分号

没错,问题是在这里,非常感谢。
回复 使用道具 举报
cjfire 中级黑马 2014-9-24 14:06:51
7#
AngleMGG 发表于 2014-9-24 12:40
首先,#define MAXSIZE 100;这里多了一个分号。其次,定义的变量Component是系统自有变量,不能重定义,改 ...

回答的恨棒,我建立的是c不是Foundation,所以没有冲突,啊我结构体那句话是声明了一个Component的类型,并且定义了一个StaticList的变量,是么?
回复 使用道具 举报
cjfire 发表于 2014-9-24 14:06
回答的恨棒,我建立的是c不是Foundation,所以没有冲突,啊我结构体那句话是声明了一个Component的类型, ...

我也不知道Component是什么东西,假设像你说的,Component是一种类型,而struct定义的 stru也是一种数据类型,那这句话的意思就是“  类型名  类型名  变量名;”   ,你觉得这格式对吗
回复 使用道具 举报
cjfire 中级黑马 2014-9-24 14:40:55
9#
AngleMGG 发表于 2014-9-24 14:23
我也不知道Component是什么东西,假设像你说的,Component是一种类型,而struct定义的 stru也是一种数据 ...

之前的代码有问题,可能产生误导了,你看看现在这个。
回复 使用道具 举报
因为你使用了typedef ,所以在结构体后面可以有多个名称,当然也可以有结构体数组了!
typedef struct{
    ElemType data;
    int cur;
}Component,StaticList[MAXSIZE];

这个代码可以这么写:
typedef struct Component{
    ElemType data;
    int cur;
}StaticList[MAXSIZE];
Component stu1[20];
如果没有typedef,必须这样写了
struct Component{
    ElemType data;
    int cur;
}StaticList[MAXSIZE];
回复 使用道具 举报
daoqin 发表于 2014-9-24 15:17
因为你使用了typedef ,所以在结构体后面可以有多个名称,当然也可以有结构体数组了!
typedef struct{
    ...

你的意思是Component,StaticList都是类型名?
回复 使用道具 举报
你的ElemType 什么意思?component和后边的意思是什么啊,看样子像是类型
回复 使用道具 举报
是不是第一行多了个分号?你这是在看算法书吧?
回复 使用道具 举报
cjfire 发表于 2014-9-25 09:07
你的意思是Component,StaticList都是类型名?

是这样的,要复习一下typedef哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马