Keilc51,大神麻烦看一下,指针数组赋值问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Keilc51,大神麻烦看一下,指针数组赋值问题相关的知识,希望对你有一定的参考价值。

我想将P2^4,P2^5,P2^6,P2^7, 的地址存到指针数组*SM[]中却总是不行。
#include <STC12C5A60S2.H>

sbit SMA=P2^4;
sbit SMB=P2^5;
sbit SMC=P2^6;
sbit SMD=P2^7;

unsigned char *SM[3]; //定义的指针数组。
unsigned char T0_NUM=4;

main()

SM[]=0xA4,0xA5,0xA6,0xA7; //将4个针脚地址给SM
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
while(1);


void time0() interrupt 1

TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
T0_NUM--;
if(T0_NUM==0)

T0_NUM=4;
*SM[0]=~*SM[0];


编译错误如下:
main.c(13): error C141: syntax error near ']'
main.c(13): error C141: syntax error near ''

参考技术A 不会指针,用数组代替一下。可以吗
#include <STC12C5A60S2.H>

sbit SMA=P2^4;
sbit SMB=P2^5;
sbit SMC=P2^6;
sbit SMD=P2^7;
unsigned char T0_NUM=4;

main()

unsigned char code SM[]=0xA4,0xA5,0xA6,0xA7; //将4个数组地址给SM
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
while(1);


void time0() interrupt 1

TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
T0_NUM--;
if(T0_NUM==0)

T0_NUM=4;
SM[0]=~SM[0];

追问

因为我数组没学好所以才问的,用其他方法代替我也会。

字节数组赋值问题?

byte[] buffer = new byte[1024];
byte[] result = null;
buffer = (byte[]) map.get("data");
result = new byte[buffer.length];
for (int i = 0; i < buffer.length; i++)
result[i] = buffer[i];

我看项目源码中有这样的赋值,想问一下为什么buffer是直接从map中获取,而result要一个个从buffer中获取?为什么不能像buffer一样直接获取map?

在这段代码中,buffer的长度是1024,是一个固定的值。而从map中获取到的byte数组的长度可能不同,因此需要根据实际长度来创建result数组,而不是直接使用长度为1024的固定数组。

如果直接使用固定长度的数组来接收map中的byte数组,可能会导致部分数据被截断,或者数组过大导致内存浪费。因此,需要根据实际情况动态分配数组大小。

另外,使用循环逐个复制的方式将buffer中的数据复制到result数组中,是因为在Java中,数组是引用类型,直接将buffer赋值给result只是让result指向了buffer的内存空间,而不是复制了其中的数据。因此需要使用循环逐个复制的方式,将buffer中的数据复制到新的result数组中。
参考技术A 这是因为,java里面byte数组直接赋值其实是一个引用,也就是占用的数据区域其实是一个。
int[] a = 1,2,3;int[] b = new int[3];b = a;for(int i = 0; i < a.length; i++)a[i] = 0;
这个代码执行完之后,ab都是全0了。

以上是关于Keilc51,大神麻烦看一下,指针数组赋值问题的主要内容,如果未能解决你的问题,请参考以下文章

求大神

如何给结构体里的数组复制啊???

Keil C51 中堆栈指针的问题

keil c51与keil uVision的联系与区别

Keil C51 在编译时不会为结构指针分配内存

stm32的地址分配方面的问题求解,恳请大神细心指针,不胜感激~~~