社区
C语言
帖子详情
如何把变量转成常量?
wtogether
2005-12-13 12:02:47
申明了一系列数组常量,这样的格式:
char *c0[] = {"a","b","c"};
char *c1[] = {"d","e","f"};
char *c2[] = {"g","h","i"};
................
因为c*的列数比较多,所以,不能一个个的去判段调用哪个数组
现在想用两个变量char buf[10]和int i,引用一个常量
i = 3;
sprintf(buf, "c%d", i);
这个宏应该怎么设置?
...全文
1455
15
打赏
收藏
如何把变量转成常量?
申明了一系列数组常量,这样的格式: char *c0[] = {"a","b","c"}; char *c1[] = {"d","e","f"}; char *c2[] = {"g","h","i"}; ................ 因为c*的列数比较多,所以,不能一个个的去判段调用哪个数组 现在想用两个变量char buf[10]和int i,引用一个常量 i = 3; sprintf(buf, "c%d", i); 这个宏应该怎么设置?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
waterczh
2005-12-14
打赏
举报
回复
有创意
zcz0918
2005-12-14
打赏
举报
回复
#define F(a,n) \
sprintf((char*)(a),(char*)c##n);这样可以用F(buf,1),不过C中串化不能操作字符串的,所以lz的要求还是实现不了
zcz0918
2005-12-14
打赏
举报
回复
#define P(a,n)
wtogether
2005-12-14
打赏
举报
回复
to lyh_bgsky()
这个方法只对常量有效
int g2[3] = {2,3,4};
#define GETME(i,y) \
g##i[1] = y;
... ..... ............
i = 1;
GETME(i,100);
就编译不过了
感谢大家帮助,只有另外想办法了
wtogether
2005-12-13
打赏
举报
回复
那有没有动态赋值的方法,例如申明:
char **c[30] = {};
然后
c[0] = {"a", "b", "c"};
c[1] = {"e", "d", "f"};
.........
不过这种申明编译不过去啊
megaboy
2005-12-13
打赏
举报
回复
你想要的是“标识符化”,但C里没有这样的东西,不行的。老老实实用数组去做吧。
可以用数组这样变通,定义一个二级指针数组,例如:
char **a[N]; //N在0---c*的*之间
然后a[0]=c0,a[1]=c1.......a[N]=cN
a[i]就是对应的数组。
lyh_bgsky
2005-12-13
打赏
举报
回复
谁说不可以,至少在vc 6里可以实现
例:
int g1[3] = {1,2,3};
int g2[3] = {2,3,4};
#define GETME(i,y) \
g##i[1] = y;
... ..... ............
GETME(1,100);
int j = g1[1];
你看值是不是改变了 ^_^
lyh_bgsky
2005-12-13
打赏
举报
回复
说不可以,至少在vc 6里可以实现
例
int g1[3] = {1,2,3};
int g2[3] = {2,3,4};
#define GETME(i,y) \
g##i[1] = y;
... ..... ............
GETME(1,100);
int j = g1[1];
你看值是不是改变了 ^_^
jixingzhong
2005-12-13
打赏
举报
回复
有创意, 但是目前没有可行性 ~
或许以后可以把 标准拓展一下吧 ~ ^_^
arden1019
2005-12-13
打赏
举报
回复
c的宏是不会进入字符串""中解释的。
所以你的i = 3;
sprintf(buf, "c%d", i);
不太好使用宏实现。
Helloooooo
2005-12-13
打赏
举报
回复
可以申明一个指针数组(char*)c[30],
对每一个指针使用时开辟内存然后赋值。
------------------------------------
回复人: wtogether(wtogether) ( ) 信誉:100 2005-12-13 12:50:00 得分: 0
那有没有动态赋值的方法,例如申明:
char **c[30] = {};
然后
c[0] = {"a", "b", "c"};
c[1] = {"e", "d", "f"};
.........
不过这种申明编译不过去啊
csucdl
2005-12-13
打赏
举报
回复
使用这个{}来赋值似乎不妥, {}成为初始化值, 想想他应该用来干什么
goodluckyxl
2005-12-13
打赏
举报
回复
^_^ lz想法有创意
不过是不行的 c只能认出是c**字符串
定义管理类型的数组或者使用链表等数据结构来管理
wtogether
2005-12-13
打赏
举报
回复
兄弟是C语言的,没有类
piaochen_2002
2005-12-13
打赏
举报
回复
老大为什么不用vector<string>呢?
Swift中文教程DOC版
Apple Swift编程语言入门教程 中文版本文档。主要通过实例讲解基础的语法
Java
变量
转换成
常量
_java基础之
变量
和
常量
、类型转换
一、
变量
变量
是可改变的量,每赋个值便会开辟一个新内存地址。1、首先,
变量
需要一个声明,例如:int a,这个a也可以当作是一个标签,它指向了一个内存地址,这个地址是属于int类型的套餐,可以通过访问a来访问内存地址,原理如下图2、声明
变量
的规则字母或者下划线”_”开头,结尾可用数字,声明时不能用关键字声明声明的格式如下:其中float a=15.5f,后面之所以加个f,和下面long v...
什么是
常量
?如何区分
常量
和
变量
?
什么是
常量
,什么是
变量
?怎样区分⼆者?
变量
与
常量
一、什么是
变量
,什么是
常量
? 1.
变量
是一个可以不断变化的值。 2.
变量
是一块内存空间。 3.
常量
具有和
变量
一样的概念和性质,不同的是,
常量
不可变化,是固定的,而
变量
可以不断变化。 二、
变量
的概念 1、
变量
是计算机语言中能储存计算结果或能表示值抽象概念。 2、
变量
可以通过
变量
名访问。 3、
变量
是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息。 三、变...
C#-
变量
、
常量
与数据转换
C#——
变量
与
常量
C语言
70,020
社区成员
243,264
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章