社区
C语言
帖子详情
如何计算数组初始化的个数
hsf1002
2009-12-10 08:53:50
比如 Type arr[6] = {value_0, value_1};
它初始化的个数是2;有什么通用简单的方法知道呢?
...全文
256
30
打赏
收藏
如何计算数组初始化的个数
比如 Type arr[6] = {value_0, value_1}; 它初始化的个数是2;有什么通用简单的方法知道呢?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
30 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yuesheng3707
2009-12-11
打赏
举报
回复
[Quote=引用 28 楼 nk_ysg 的回复:]
sizeof
[/Quote]
不可以
hsf1002
2009-12-10
打赏
举报
回复
我就想在编译的时候就可检测到问题
hsf1002
2009-12-10
打赏
举报
回复
[Quote=引用 23 楼 forster 的回复:]
没初始化不一定为0
[/Quote]全局的是 0 吧;
hsf1002
2009-12-10
打赏
举报
回复
[Quote=引用 11 楼 mstlq 的回复:]
全局……
只好循环,判断找“0”了……
万一人家也是初始化为0的,那就悲剧了……
[/Quote]可以确定这个0不会影响到的,比如数组类型是指针,非法值是PNULL(是0),类型是TXT_ID, 非法值是TXT_NULL(非0);
forster
2009-12-10
打赏
举报
回复
没初始化不一定为0
hsf1002
2009-12-10
打赏
举报
回复
[Quote=引用 21 楼 jasion_chen 的回复:]
不知道是基于何种设计的需求要这样做
[/Quote]---------------------------------------
例如:
const static HandleIconFun s_mainmenu_multi_page_func[PAGE_NUM][ICON_NUM] =
{
// first page
{
EnterPB,
EnterSms,
EnterBT,
//
},
// second page
{
EnterCL,
EnterMp3,
//
},
//
//
...
};
const static TXT_ID s_mainmenu_multi_page_text_id[PAGE_NUM][ICON_NUM] =
{
// first page
{
TXT_PB,
TXT_Sms,
TXT_BT,
//
},
// second page
{
TXT_CL,
TXT_Mp3,
//
},
//
//
...
};
为了让上述2个数组每一维数的实际初始化个数一致;这样在编译的时候就可检测到问题,而不至于运行时出现错误;
jasion_chen
2009-12-10
打赏
举报
回复
不知道是基于何种设计的需求要这样做
lovesi3344
2009-12-10
打赏
举报
回复
Type arr[] = {value_0, value_1};
方括号留空,让编译器为你代劳
[Quote=引用楼主 hsf1002 的回复:]
比如 Type arr[6] = {value_0, value_1};
它初始化的个数是2;有什么通用简单的方法知道呢?
[/Quote]
alijun19886666
2009-12-10
打赏
举报
回复
[Quote=引用 2 楼 asdnana 的回复:]
sizeof(arr)/sizeof(arr[0])
[/Quote]
这样计算的是这个数组总共开辟的维数
alijun19886666
2009-12-10
打赏
举报
回复
[Quote=引用楼主 hsf1002 的回复:]
比如 Type arr[6] = {value_0, value_1};
它初始化的个数是2;有什么通用简单的方法知道呢?
[/Quote]
这本身就有矛盾,这样初始化就是默认为数组Type arr后四个变量为0,建议如果这个数组后续要增加维数可以采用动态开放,new和delete,链表操作
猫已经找不回了
2009-12-10
打赏
举报
回复
[Quote=引用楼主 hsf1002 的回复:]
比如 Type arr[6] = {value_0, value_1};
它初始化的个数是2;有什么通用简单的方法知道呢?
[/Quote]
这个只能你自己维护信息了,没道理C++可以聪明到这种地步。
a1330575
2009-12-10
打赏
举报
回复
[Quote=引用 5 楼 hsf1002 的回复:]
引用 3 楼 sxsong_04 的回复:
用循环吧,找非默认值的个数
在做项目的时候就是用循环,但是我觉得这样不好,如果数组类型改变就得重写;
[/Quote]
再把数组对应的数组默认值传进去不就行了啊
z569362161
2009-12-10
打赏
举报
回复
最好是用什么自己先知道
苍蝇①号
2009-12-10
打赏
举报
回复
无解。
可能你需要的是一个线性表
LPR_Pro
2009-12-10
打赏
举报
回复
无解
im_ym
2009-12-10
打赏
举报
回复
这个只能定些默认的规则了,根据规则判断初始化的个数~~~
mstlq
2009-12-10
打赏
举报
回复
全局……
只好循环,判断找“0”了……
万一人家也是初始化为0的,那就悲剧了……
neu_gis
2009-12-10
打赏
举报
回复
规范一点的话,应该是全部初始化
hsf1002
2009-12-10
打赏
举报
回复
[Quote=引用 4 楼 donntknow 的回复:]
1,一般编码规范都会要求,对数组要在声明时全部初始化。
2,c中,未初始化的数组里面存的是什么值无法知道,因此没有什么方法可以判断哪些初始化了,哪些没有初始化。
[/Quote]呵呵,有道理,我很确定只有定义全局数组时才有这个知道数组初始化个数的需求,所以未初始化的值是确定的了;
hsf1002
2009-12-10
打赏
举报
回复
[Quote=引用 2 楼 asdnana 的回复:]
sizeof(arr)/sizeof(arr[0])
[/Quote]这个肯定不对啦;
加载更多回复(10)
【C语言】三种
数组
初始化
方法,及
计算
数组
元素
个数
一、
初始化
方法 1 int a[5]={1,2,3,4,5}; 方法 2 int b[]={6,7,8,9,10}; 方法 3 int c[5]; //必须定义大小,否则报错 c[0]=11; c[1]=12; c[2]=13; c[3]=14; c[4]=15; 二、
计算
数组
元素
个数
int len=sizeof(a)/sizeof(int); 注:sizeof() 函数
计算
的是变量的字节数,本实例中
数组
a 是 int 类型,一个 int 为 4 字节,
数组
a 有 5.
c/c++:一维
数组
,
初始化
数组
,循环打印
数组
,
计算
数组
存储空间,
数组
元素
个数
,
数组
逆序算法
c/c++:一维
数组
,
初始化
数组
,循环打印
数组
,
计算
数组
存储空间,
数组
元素
个数
,
数组
逆序算法
#
数组
初始化
方法##c99定位
初始化
###sizeof
计算
数组
元素
个数
####注意事项
数组
的
初始化
方法 1. 2. 给第一个单元赋值,其余
初始化
为0 3.c99可以定位
初始化
值
数组
的大小sizeof (sizeof的用法见收藏夹,这里只简单用一下) sizeof 给出整个
数组
所占的内容的大小,单位是字节 54/4=13
数组
的元素数量=整个
数组
大大小/第一个单元的大小 sizeof(a)/sizeof(a[0]) 这样写 for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
数组
作为函数的参数时,不能在[]中给出
数组
的大小,也不能利用sizeof来计
1.4
数组
的细节讲解(一维
数组
的创建,
初始化
详细讲解,输入输出用法,
计算
数组
大小与
数组
个数
,二维
数组
(二维的内容和一维一样),变长
数组
)
内容包括:一维
数组
的创建,
初始化
详细讲解,输入输出用法,
计算
数组
大小与
数组
个数
,二维
数组
(二维的内容和一维一样),变长
数组
。不完全
初始化
int math[10]={1,2,3,4,5} 剩下的6个格子就是存放0。arr_name 指的是
数组
名的名字,这个名字根据实际情况,起的有意义就⾏。中的常量值是⽤来指定
数组
的⼤⼩的,这个
数组
的⼤⼩是根据实际的需求指定就⾏。有了变长
数组
就可以在外面改
数组
里面的值,防止
数组
里面超出或者浪费空间。用整个
数组
的字节大小除以
数组
中一个字节的大小就可以得出十足的
个数
。
C语言用指针
计算
字符串元素
个数
,用指针给
数组
赋值/
初始化
指针之间的运算,关系运算,取地址大小
C语言
70,040
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章