结构体能定义成常量吗?谢谢各位100分

xiaoqbruo 2004-12-03 09:19:18
#include "iostream.h"
#include <string>
using namespace std;

struct Data
{
int nFirst;
string str;
};

Data dat;

void fun(Data param = dat)
{
cout<<param.nFirst<<endl;
char ch[20];
sprintf(ch, param.str.c_str());
cout<<ch<<endl;
return;
}

void main()
{
dat.nFirst = 1;
dat.str = "1";
fun();
}

我想把dat定义成常量,可能吗?
...全文
2483 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
pacman2000 2004-12-03
  • 打赏
  • 举报
回复
当然可以啊!
beyondtkl 2004-12-03
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

typedef struct _tagTest
{
enum {ID = 1};
int j;
} Test;

void main()
{
Test t;
t.j = 1;
cout << t.j << " " << Test::ID << endl;
};
tulading 2004-12-03
  • 打赏
  • 举报
回复
将dat用const定义成常量,在类内定义,类外初始化,必须初始化
struct Data
{
int nFirst;
string str;
const Data dat;
};
dat=10;//举例
liem 2004-12-03
  • 打赏
  • 举报
回复
在C中也可以:
struct dat{
int i;
};

main()
{
const struct dat a={2};
printf("%d\n",a.i);
}
hewittlee 2004-12-03
  • 打赏
  • 举报
回复
ok!
021850524 2004-12-03
  • 打赏
  • 举报
回复
//给你写的C的.
#include <stdio.h>

typedef struct
{
int n;
char *str;
}Node;

int main()
{
const Node n = { 3, "sdf" };
return 0;
}

xiaoqbruo 2004-12-03
  • 打赏
  • 举报
回复
c中没有const,只有#define,我想是不可以的
021850524 2004-12-03
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>
using namespace std;

struct Node
{
int n;
string str;
};

int main()
{
const Node n = { 3, "sdf" }; //忘记打上const了.
// n.n = 3;
// n.str = "adsdf";
return 0;
}
//C中这样不就行了吗.
horisly 2004-12-03
  • 打赏
  • 举报
回复
carylin(别信我,我在说谎) :
虚心请教:你这里给struct定义了构造函数,那不等于类了吗?
如果是在c中,该如何定义呢??<c中好像没有构造函数的说法>
xiaoqbruo 2004-12-03
  • 打赏
  • 举报
回复
谢谢大伙,谢谢carylin。carylin,我懂你的意思了。
horisly 2004-12-03
  • 打赏
  • 举报
回复
但这不也变成了类了吗?<如果对于c中的结构体呢?如何...>
yevv 2004-12-03
  • 打赏
  • 举报
回复
初始化也可以用构造函数阿 或者给构造函数指定默认参数
horisly 2004-12-03
  • 打赏
  • 举报
回复
不过,初始化的确是个问题.
看大虾如何....
021850524 2004-12-03
  • 打赏
  • 举报
回复
可以!
//去掉注释, 该语句就会报错了.
//另外, VC6下也会报错, 因为对标准支持不是太好吧. 在GCC上是没有问题的.

#include <iostream>
#include <string>
using namespace std;

struct Node
{
int n;
string str;
};

int main()
{
Node n = { 3, "sdf" };
// n.n = 3;
// n.str = "adsdf";
return 0;
}
carylin 2004-12-03
  • 打赏
  • 举报
回复
當然可以暸,沒理由不行啊。
但是這樣的話就要有個搆造函數Data(int, string)
比如:
struct Data
{
Data(int f, string s) : nFirst(f), str(s){}

int nFirst;
string str;
};

常量定義時這是一種實現:
const Data dat(1, "1");
horisly 2004-12-03
  • 打赏
  • 举报
回复
可以,但是必须在定义时初始化该常量.
avalonBBS 2004-12-03
  • 打赏
  • 举报
回复
当然可以
friedchicken2002 2004-12-03
  • 打赏
  • 举报
回复
结构体之间可以直接复制。
如:dat a,b;
a=b;这样也可以。
typedef struct Data
{
int nFirst;
string str;
}dat;
这样dat就是一个类似于int,char等的类型名了,
定义时:dat a,b;就可以了。
xiaoxiaofei 2004-12-03
  • 打赏
  • 举报
回复
结构体也是一种数据类型,只不过是自己定义的;
应该可以定义成常量的,就像别的类型常量一样的语法:const int i=10;
不过初始化赋值是个问题,你试一下不就知道了?
双杯献酒 2004-12-03
  • 打赏
  • 举报
回复
可以。
加载更多回复(3)

65,201

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧