硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1932|回复: 7
收起左侧

关于计算数组里元素个数问题

[复制链接]

36

主题

142

回帖

250

积分

高级会员

积分
250
发表于 2019-6-5 11:29:19 | 显示全部楼层 |阅读模式
定义char * a[] = { "ab", "cde", fg","hi", "zk" };用到时 我有可能又增加了 a[5] =“”ji“” 用 sizeof(a) / sizeof(a[0]) =5,相当于增加的 a[5] 没有计算进去
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2019-6-5 11:41:58 | 显示全部楼层
这种定义方式,实际上已经为其分配了空间大小,不能再增加。你可以定义成全局变量,看下map文件
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2019-6-5 12:02:31 | 显示全部楼层
eric2013 发表于 2019-6-5 11:41
这种定义方式,实际上已经为其分配了空间大小,不能再增加。你可以定义成全局变量,看下map文件

定义全局变量也不行 那增加了 a[5] =“”ji“” 相当于地址和a[] 的地址分开了呗
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2019-6-6 09:11:15 | 显示全部楼层
eric2013 发表于 2019-6-5 11:41
这种定义方式,实际上已经为其分配了空间大小,不能再增加。你可以定义成全局变量,看下map文件

现在又一个新问题 定义static* _aLang[][2] 完之后  我更改其中的内容 _aLang[][2]  ={“ab“,“cd”};报错 这是为什么  如果想实现更改怎么做呢  谢谢硬汉
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2019-6-6 09:11:44 | 显示全部楼层
_aLang[0][2]  ={“ab“,“cd”};
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2019-6-6 09:51:44 | 显示全部楼层
老虎的菜 发表于 2019-6-5 12:02
定义全局变量也不行 那增加了 a[5] =“”ji“” 相当于地址和a[] 的地址分开了呗

你这个就是定义了5个指针变量,而你的a[5]已经是越界地址了

QQ截图20190606094930.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2019-6-6 09:57:46 | 显示全部楼层
老虎的菜 发表于 2019-6-6 09:11
现在又一个新问题 定义static* _aLang[][2] 完之后  我更改其中的内容 _aLang[][2]  ={“ab“,“cd”}; ...

还用这种方式
char * a[] = { "ab", "cde", fg","hi", "zk" };

就行,将你的a[0] -- a[4]通过类似malloc的方式动态分配空间,就可以动态修改了
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2019-6-6 13:23:00 | 显示全部楼层
eric2013 发表于 2019-6-6 09:57
还用这种方式
char * a[] = { "ab", "cde", fg","hi", "zk" };

谢谢硬汉回复 懂了
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 13:06 , Processed in 0.184110 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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