OpenEdv-开源电子网

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

求助:还是数组的问题

[复制链接]

64

主题

249

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1073
金钱
1073
注册时间
2017-6-10
在线时间
279 小时
发表于 2019-2-18 14:24:50 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 rjx007 于 2019-2-18 14:26 编辑

继续诚求解答。先谢谢各位高手。
有3个数组,其中C数组为待赋值的数组,另两个已知的数组A和B里各有100个不相同的元素,按给定的条件,使C数组能得到不同的值,希望能用指针的方法解决此问题。

uchar  C[100]={0};
uchar  A[100]={100个已知元素};
uchar  B[100]={另外100个不同的已知元素};


if(PIND.4==1)
{
       使C数组等于A;
}
else if(PIND.4==0)
{
      使C数组等于B;
}

最佳答案

查看完整内容[请看2#楼]

定义一个指针,指向A数组,然后通过指针给数组赋值,uchar *p = C, *p++ = A,不知道是不是你说的这个意思?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
发表于 2019-2-18 14:24:51 | 显示全部楼层
定义一个指针,指向A数组,然后通过指针给数组赋值,uchar *p = C, *p++ = A[i],不知道是不是你说的这个意思?
回复

使用道具 举报

64

主题

249

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1073
金钱
1073
注册时间
2017-6-10
在线时间
279 小时
 楼主| 发表于 2019-2-18 15:43:04 | 显示全部楼层
本帖最后由 rjx007 于 2019-2-18 15:54 编辑

谢楼上,这样可以了。
这样问题得到解决,但不知是不是最好的办法.

uchar  C[100]={0};
uchar A[100]={100个已知元素};
uchar B[100]={另外不同的100个已知元素};
uchar *p;
uchar i;

if(PIND.4==1)
{
     for(i=0;i<100;i++)  { *p++=A; }
}
else if(PIND.4==0)
{
      for(i=0;i<100;i++)  { *p++=B; }
}
回复

使用道具 举报

64

主题

249

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1073
金钱
1073
注册时间
2017-6-10
在线时间
279 小时
 楼主| 发表于 2019-2-18 15:48:43 | 显示全部楼层
太奇怪了,上贴for循环里A和B后面都应有[i],可是就是打不上去。
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-2-18 17:10:42 | 显示全部楼层
你的目的不明确, 是想拷贝A或B到C? 还是只是用C来做判断, 无需通过修改C来改变A或B?
如果是后者, C不需要定义为数组, 而是定义为指针

uchar  * C;
uchar A[100]={100个已知元素};
uchar B[100]={另外不同的100个已知元素};

if(PIND.4==1)
{
     C=A;
}
else if(PIND.4==0)
{
     C=B;
}
回复

使用道具 举报

64

主题

249

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1073
金钱
1073
注册时间
2017-6-10
在线时间
279 小时
 楼主| 发表于 2019-2-18 17:23:47 | 显示全部楼层
C必须为数组,在不同条件下,将A或B的值赋予C.
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-2-18 17:40:39 | 显示全部楼层
本帖最后由 edmund1234 于 2019-2-18 17:42 编辑
rjx007 发表于 2019-2-18 17:23
C必须为数组,在不同条件下,将A或B的值赋予C.

C是可以当成数组来用的,
比如 abc = C[0x12];
如果前面的判诉是C=A;
那么 C[0x12] 是等于A[0x12]的



回复

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
发表于 2019-2-19 13:07:14 | 显示全部楼层
edmund1234 发表于 2019-2-18 17:40
C是可以当成数组来用的,
比如 abc = C[0x12];
如果前面的判诉是C=A;

没有给C分配空间,C是当不了数组用吧?首先malloc给C指针分配空间,然后才能把C指针当数组用吧?
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-2-19 14:08:37 | 显示全部楼层
本帖最后由 edmund1234 于 2019-2-19 14:21 编辑
wangmingwei093 发表于 2019-2-19 13:07
没有给C分配空间,C是当不了数组用吧?首先malloc给C指针分配空间,然后才能把C指针当数组用吧?

这是C语言的基本语法,  能不能这样用, 不就几行代码嘛, 试一下不就知道了
C操作的是A或B的内存空间, 这是为什么我在前面说C如果是只用作判断,而不会用作改变数组的原因。
回复

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
发表于 2019-2-19 14:26:35 | 显示全部楼层
edmund1234 发表于 2019-2-19 14:08
这是C语言的基本语法,  能不能这样用, 不就几行代码嘛, 试一下不就知道了
C操作的是A或B的内存空间, ...

可能我理解错你的意思了吧,我只是觉着说把C当成数组用不严谨
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-20 14:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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