VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 712|回复: 4

几个特别容易混淆的问题,大侠帮忙

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-23 16:00:01 | 显示全部楼层 |阅读模式
小弟刚刚学c语言,在最近code时候遇到几个问题弄了两天都解决不了,实在郁闷,希望大侠帮忙:
#include <stdio.h>
#define DATATYPE1 int
#define MAXSIZE 100


typedef struct
{
  DATATYPE1 datas[MAXSIZE];
  int last;
}SEQUENLIST;

main()
{   
  SEQUENLIST squn1;
  squn1.datas[MAXSIZE]={0,1,2,3,4};//为什么这样写不可以       
          
}

这段代码中squn1.datas这样赋值为什么不可以啊,我看教科书上面也是这样的啊,我这样赋值后总是会出现如下错误
D:\vc\MSDev98\MyProjects\chapter2\sequenlist.cpp(58) : error C2059: syntax error : '{'
D:\vc\MSDev98\MyProjects\chapter2\sequenlist.cpp(58) : error C2143: syntax error : missing ';' before '{'
D:\vc\MSDev98\MyProjects\chapter2\sequenlist.cpp(58) : error C2143: syntax error : missing ';' before '}'
D:\vc\MSDev98\MyProjects\chapter2\sequenlist.cpp(76) : warning C4508: 'main' : function should return a value; 'void' return type assumed
执行 cl.exe 时出错.

然而我改成squn1.datas[0]=0;这样单个元素单个元素赋值就可以了,同样是赋值为什么一种可以一种不可以啊,希望大侠帮忙


回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-7-2 22:30:02 | 显示全部楼层
第二个问题:
还是这段代码:

#include <stdio.h>
#define DATATYPE1 int
#define MAXSIZE 100


typedef struct
{
  DATATYPE1 datas[MAXSIZE];
  int last;
}SEQUENLIST;

  SEQUENLIST squn1;
  squn1.datas[MAXSIZE]={0,1,2,3,4};//为什么这样写不可以
main()
{                        
}

为什么把squn1.data放外面赋值就会报错 ,而SEQUENLIST squn1放外面就没有事的
错误是
D:\vc\MSDev98\MyProjects\chapter2\sequenlist.cpp(55) : error C2143: syntax error : missing ';' before '.'
D:\vc\MSDev98\MyProjects\chapter2\sequenlist.cpp(55) : error C2501: 'squn1' : missing storage-class or type specifiers
D:\vc\MSDev98\MyProjects\chapter2\sequenlist.cpp(55) : error C2143: syntax error : missing ';' before '.'
D:\vc\MSDev98\MyProjects\chapter2\sequenlist.cpp(55) : error C2143: syntax error : missing ';' before '{'
D:\vc\MSDev98\MyProjects\chapter2\sequenlist.cpp(55) : error C2447: missing function header (old-style formal list?)
D:\vc\MSDev98\MyProjects\chapter2\sequenlist.cpp(74) : warning C4508: 'main' : function should return a value; 'void' return type assumed
执行 cl.exe 时出错.
回复

使用道具 举报

0

主题

19

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-7-3 01:45:01 | 显示全部楼层
squn1.datas[MAXSIZE]={0,1,2,3,4};//为什么这样写不可以

对数组用{...}赋值,只有定义时可以,以后赋值时只能一个一个的赋值了。
回复

使用道具 举报

0

主题

14

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-7-3 11:00:01 | 显示全部楼层
初始化时才可以写成int a[6]={0,1,2,3,4};
一般的赋值只能写成a[0]=0,a[1]=1,......
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-7-3 20:45:01 | 显示全部楼层
谢谢楼上两位朋友,那第二个问题有答案吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表