OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1968|回复: 5

请教一个编程中数组定义的问题

[复制链接]

64

主题

249

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1073
金钱
1073
注册时间
2017-6-10
在线时间
279 小时
发表于 2019-2-9 16:13:11 | 显示全部楼层 |阅读模式
1金钱
想定义有一个数组,名称相同,但里面的元素不同,想利用单片机某脚读入高低电平不同,来相应定义这个名称相同内容不同的数组,来达到用同一个函数在不同场合调用不同的数组元素的目的。实际就是两个数组,但为了后面程序调用方便,而起了相同的名字。
如:

if(PIND.4==1)
   {flash uchar A[]={1,2,3} ;   }
else if(PIND.4==0)
   {flash uchar A[]={4,5,6}    }
我将这段代码放在主函数里,结果编译通不过,后面的程序引用这个数组时,说这个数组A未定义,请问应该怎样处理?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2017-9-4
在线时间
12 小时
发表于 2019-2-9 16:33:34 | 显示全部楼层
定义过数组初始化后程序中就不能A[ ]={1,2,3};这样重复初始化了吧
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2017-9-4
在线时间
12 小时
发表于 2019-2-9 16:43:06 | 显示全部楼层
数组我知道的只有逐个赋值和memcpy函数你可以试试memcpy函数
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8036
金钱
8036
注册时间
2014-8-13
在线时间
1595 小时
发表于 2019-2-9 17:32:05 | 显示全部楼层
你定义的数组在执行到  }  的时候生命周期就结束了,所以,在  }  之外的语句看到A的时候就会提示A未定义。你看一下C++/C的书籍吧。
解决方法:
1、你定义好一个全局数组,在PIND.4的值不同的时候,对数组进行不同的赋值。
2、定义一个全局指针,在PIND.4数值不同的时候动态创建数组,并且将全局指针指到动态创建的数组上。(此方法记得内存回收)
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2017-9-4
在线时间
12 小时
发表于 2019-2-9 19:50:57 | 显示全部楼层
受教了
回复

使用道具 举报

64

主题

249

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1073
金钱
1073
注册时间
2017-6-10
在线时间
279 小时
 楼主| 发表于 2019-2-12 16:25:25 | 显示全部楼层
感谢mack13013的详细解答。一用第一个方法了。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 08:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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