const int全局变量数组初始化

shiter
人工智能领域优质创作者
博客专家认证
2017-07-18 11:49:45
const int全局变量数组如何使用函数初始化,我的这个数组比较长,所以想要用函数初始化? 怎么让函数返回数组,然后整体初始化呢. 全局变量初始化应该在主函数之前的吧。
...全文
936 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2017-08-02
  • 打赏
  • 举报
回复
引用 23 楼 lin5161678 的回复:
int i = 0;
i += ++i + ++i;
i 是多少?
这种问题, 写代码跑一下就知道了. 没必要解释. 如果在工作中写这种代码, 保证被吐槽到死
lin5161678 2017-08-01
  • 打赏
  • 举报
回复
引用 22 楼 xiaohuh421 的回复:
[quote=引用 21 楼 lin5161678 的回复:] [quote=引用 20 楼 xiaohuh421 的回复:] [quote=引用 18 楼 lin5161678 的回复:] [quote=引用 17 楼 xiaohuh421 的回复:] const int SIZE = 3; *(int*)&SIZE = 100;
这是错的 企图修改一个const限定的变量是不可取的[/quote] 这就是C/C++的特点, 虽然法律规定了不能杀人, 杀人不好, 但实际上还是可以杀的, 只是后果自负. [/quote]不想和你谈论乱扯的比喻 你就告诉我 你这样做了之后 SIZE的值是多少了[/quote] 依赖于编译器实现吧, 在VS中, 如果你是直接使用的SIZE, 那么它会参编译时就确定(常量替换). 如果使用指针访问它, 那么会变成修改后的值.[/quote]
int i = 0;
i += ++i + ++i;
i 是多少?
xiaohuh421 2017-07-31
  • 打赏
  • 举报
回复
引用 21 楼 lin5161678 的回复:
[quote=引用 20 楼 xiaohuh421 的回复:] [quote=引用 18 楼 lin5161678 的回复:] [quote=引用 17 楼 xiaohuh421 的回复:] const int SIZE = 3; *(int*)&SIZE = 100;
这是错的 企图修改一个const限定的变量是不可取的[/quote] 这就是C/C++的特点, 虽然法律规定了不能杀人, 杀人不好, 但实际上还是可以杀的, 只是后果自负. [/quote]不想和你谈论乱扯的比喻 你就告诉我 你这样做了之后 SIZE的值是多少了[/quote] 依赖于编译器实现吧, 在VS中, 如果你是直接使用的SIZE, 那么它会参编译时就确定(常量替换). 如果使用指针访问它, 那么会变成修改后的值.
lin5161678 2017-07-30
  • 打赏
  • 举报
回复
引用 20 楼 xiaohuh421 的回复:
[quote=引用 18 楼 lin5161678 的回复:] [quote=引用 17 楼 xiaohuh421 的回复:] const int SIZE = 3; *(int*)&SIZE = 100;
这是错的 企图修改一个const限定的变量是不可取的[/quote] 这就是C/C++的特点, 虽然法律规定了不能杀人, 杀人不好, 但实际上还是可以杀的, 只是后果自负. [/quote]不想和你谈论乱扯的比喻 你就告诉我 你这样做了之后 SIZE的值是多少了
xiaohuh421 2017-07-28
  • 打赏
  • 举报
回复
引用 18 楼 lin5161678 的回复:
[quote=引用 17 楼 xiaohuh421 的回复:] const int SIZE = 3; *(int*)&SIZE = 100;
这是错的 企图修改一个const限定的变量是不可取的[/quote] 这就是C/C++的特点, 虽然法律规定了不能杀人, 杀人不好, 但实际上还是可以杀的, 只是后果自负.
赵4老师 2017-07-25
  • 打赏
  • 举报
回复
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
lin5161678 2017-07-24
  • 打赏
  • 举报
回复
引用 17 楼 xiaohuh421 的回复:
const int SIZE = 3; *(int*)&SIZE = 100;
这是错的 企图修改一个const限定的变量是不可取的
xiaohuh421 2017-07-24
  • 打赏
  • 举报
回复
const int全局变量数组如何使用函数初始化,我的这个数组比较长,所以想要用函数初始化? 按语法,定义成const 的变量, 只能在定义的时候初始化, 比如 const int SIZE = 3; 然后调用 SIZE = 5; 这样是不允许的. 但是呢, C++的一个特点是指针. 你可以这样来修改它. *(int*)&SIZE = 100; 又但是 如果你代码中有如下的语句. const int SIZE = 3; *(int*)&SIZE = 100; string strs[SIZE]; // 这里应该仍然会是3, 而不是你想的100. 所以, 虽然你可以修改const变量, 但是可能达不到你想要的目的. 怎么让函数返回数组,然后整体初始化呢. 函数返回数组肯定是可以的. 可能通过参数返回, 也可能通过函数返回值返回. 其中通过参数返回时, 可以函数外部申请好数组空间, 函数内部填充数据, 也可能通过指针,直接返回内部动态申请的数组. 数组整体初始化, 如果是初始化成同一个变量, 可以使用memset, 否则就只能按需赋值了. 全局变量初始化应该在主函数之前的吧。 全局变量初始化肯定是在main函数前的, 它在main之前就会分配好内存空间了.
OnePeace888 2017-07-24
  • 打赏
  • 举报
回复
引用 13 楼 zhao4zhong1 的回复:
[quote=引用 10 楼 u011609112 的回复:] LZ的核心是定义变量时输入{}内数据太多麻烦, 如果数据不是海量,可以简单写个函数,将你要初始化时的数据写txr文件保存格式如 1,2,3,4,.......,然后拷贝到 const int a[xxxx]={} 的大括号内
了解一下代码生成技术。[/quote] 我理解LZ的需求就是我说的那样,应该涉及不到那么复杂吧?
自信男孩 2017-07-23
  • 打赏
  • 举报
回复
全局变量定义之后若未显示初始化,则也会隐式初始化;默认const int定义的初始化都为0;
destory27 2017-07-22
  • 打赏
  • 举报
回复
const 变量定义之后不可修改
yi19861209 2017-07-21
  • 打赏
  • 举报
回复
赵4老师 2017-07-21
  • 打赏
  • 举报
回复
引用 10 楼 u011609112 的回复:
LZ的核心是定义变量时输入{}内数据太多麻烦, 如果数据不是海量,可以简单写个函数,将你要初始化时的数据写txr文件保存格式如 1,2,3,4,.......,然后拷贝到 const int a[xxxx]={} 的大括号内
了解一下代码生成技术。
开心秋水 2017-07-18
  • 打赏
  • 举报
回复
还是不要设为const比较好
sdghchj 2017-07-18
  • 打赏
  • 举报
回复
严格意义上说,定义时赋值才叫初始化,否则都只能叫再赋值。 const 的全局变量只能在定义时就初始化,const的全局数组只能用{ }初始化,不排除可能有编译器支持用指针强转在在main函数开头赋值。 c语言可没有返回数组的说法,返回数组指针或者返回包装有数组的结构体到是有可能,但是数组也不能有除了 = { }之外的其它初始化方法。 为什么要定义为const???这才是问题所在。
OnePeace888 2017-07-18
  • 打赏
  • 举报
回复
这招,我以前经常用
OnePeace888 2017-07-18
  • 打赏
  • 举报
回复
LZ的核心是定义变量时输入{}内数据太多麻烦, 如果数据不是海量,可以简单写个函数,将你要初始化时的数据写txr文件保存格式如 1,2,3,4,.......,然后拷贝到 const int a[xxxx]={} 的大括号内
shiter 2017-07-18
  • 打赏
  • 举报
回复
引用 5 楼 lin5161678 的回复:
可以考虑
const int arr[] = 
{
	#include "arr.date"
}
arr.data 就自己写代码生成一个
咦,这样写, 似乎可以有
mk112255 2017-07-18
  • 打赏
  • 举报
回复
contst 不 是限制修改了吗?
lin5161678 2017-07-18
  • 打赏
  • 举报
回复
static int arr[1024];
static int isInit;

void InitArr()
{
	isInit = 1;
	//初始化arr 
}
const int *GetArr()
{
	if(isInit)
		InitArr();
	return const_cast<const int *>(arr);
}
忘记 const 了 尴尬
加载更多回复(4)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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