单片机C语言数组赋值求助

我先定义一个空的数组,如 uchar frist[5];
我在程序中要对frist[]赋值,frist[5]={a,b,c,d,e,f};
请问这样写语法有什么错误,该怎么写

数组只能在定义的时候整体赋值,不能在之后这样用。
所以你只能写成
uchar frist[5]={a,b,c,d,e,f};
而不能写成
uchar frist[5];
frist[5]={a,b,c,d,e,f};
如果你真的要在之后赋值,特别是每个成员不一样,你只能用循环或者手动一个一个赋值。
或者先把所有值放在另外一个数值然后memcpy给目标数组。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-24
uchar 你之前定义过吗?你这是对数组赋值,而数组的赋值只有二种方法,一种是初始化赋值,它可以对数组整体赋值,即,你可以用uchar frist[5]={xxxxx};
第二种就是在程序执行中赋值,即,没有经过初始化赋值;那么此时对它的赋值只能是逐个赋值,而不能像初始化赋值那样对整体来赋值了。你先定义了数组uchar first [5];即没用有初始化赋值,所以是程序执行中的赋值,故只能逐个对它赋值了。即只能用first [0]=a,first [1]=b,这样来赋值了。明白了吧,呵呵。本回答被提问者采纳
第2个回答  2011-05-10
uchar frifrist[5]={a,b,c,d,e};//正常,定义了五个元素,不能赋六个值,不能有f

frist[5]={a,b,c,d,e,f};//错误,应该写成frist[0]=a;frist[1]=b;frist[2]=c;frist[3]=d;frist[4]=e;
第3个回答  2011-05-10
少了引号追问

哪里少的呢?

追答

uchar frist[5]={'a','b','c','d','e','f'};

但定义了之后赋值是不可以的,只能对内存操作或者循环赋值了

单片机C语言数组赋值求助
uchar fasong[6]={0xAA,0x55,0x01,0x00,0x55,0xAA}; \/\/使用strcmp和strcpy需要定义好数组长度char jieshou[3];\/\/接收字符串存放处 8是字符串位 可根据实际更改 初始数组有\\0空字符\/\/此小程序就是串口助手发送8位字符串数据给单片机 单片机接收到与固定字符串对比,如果对就将接受到的数据再发送个串口助手...

51单片机 C语言 串口数组赋值问题
i_index++;if(i_index>10)\/\/接受完10个字符后显示数组所有内容 { i_index=0;for(i=0;i<11;i++)\/\/显示数组中所有内容 fh_zi(date_zi[0][i]);for(i=0;i<11;i++)fh_zi(date_zi[1][i]);for(i=0;i<11;i++)fh_zi(date_zi[2][i]);for(i=0;i<11;i++)fh_zi(date...

关于单片机中 C语言给P1口赋值问题
单片机中对每个P口的控制都是用二进制控制的 即使你对它赋了八进制或十进制或十六进制的数 它也会先转换成二进制然后再进行计算的 所以 P1是一个8位寄存器 P1=0x55 0x是16进制的意思 这样化成二进制就是01010101 P1=01010101 好的 你对它进行了八进制的赋值 01010101(你可以试一试 对P1进行0~1...

单片机C语言编程 keil 调试总是针对数组赋值出现left side of asn-op...
一般这种错误都是左式不是变量,而是一个表达式才会出现 你先检查一下是否复制的时候,有不可见的字符复制过来了?手动输一遍左式看看。

用C语言编程怎么给自己定义好的数组赋值
单片机编程是吧 unsigned char code Tab[8];这句话已经把Tab放进ROM里的,就不能再次赋值了 所以会出现unmodifiable lvalue(不能赋左值)的错误 把code去掉试试 下次出现这样的错误,就一定要去找左值的错误 是否是常量?是否是const修饰?是否放在ROM里等等 ...

请问:单片机c语言中如何实现将变量A中某1位赋值给B中某1位的操作?_百 ...
假如将A第三位赋给B第二位 对于C51架构单片机,可使用位寻址:bdata A, B;sbit a3 = A^3; \/\/位变量指向A第三位 sbit b2 = B^2;b2 = a3;对于其他任何类型单片机,可使用位操作宏(同样适用于C51):define get_bit(var, n) (var & (1<<n))define set_bit(var, n) (var |= (1...

在单片机C语言中如何对变量的某一位进行操作或赋值。
1、使用位域 在C语言中定义位域的一般格式如下:struct 位域结构名 { 位域列表 };struct:在C语言中定义位域所使用的关键字是struct。位域结构名:是一个C语言中的标识符,有字母、数字、下划线组成,而且第一个字符必须是字母或者下划线。位域列表:组其中位域列表的形式为: 类型说明符 位域名:...

请教一个单片机赋值的问题
在汇编语言程序中,容易做到尽量短。高级语言如C语言就不如汇编语言那样容易做到尽量短了。但也可以适当注意。例如,假如x2是两个进程都要访问的变量,而在较低优先级的进程中有:x2 = ………;\/* 一个很复杂的表达式 *\/ 如果在这个赋值语句的前后“关中断——开中断”,自然关的时间就嫌长了。...

单片机 C语言 移位问题请教!!
首先定义了一个包含两个元素的数组,arrya[0]=0x12,arrya[1]=0x34,然后把”arrya[0]=0x12“赋值给新建变量temp,然后temp(0x12)左移8位,变为0x1200,注意:因为temp是short类型,所以有32位,如果是8位的话,左移8位就都变为0啦!左移后再加arrya[1],也就是0x1234,然后再把0x1234...

c语言单片机编程中,怎样将一个串口的到得字符串赋值给一个数组
1、串口字节为:SBUF暂存数组:A[]依次将接收到的字节存入A[0],A[1],A[2],...A[n],接收完毕,存入字符串结束标识:A[N+1]=0A就代表一个字符串。如果是一串数字,要转为整数。2、例程:include<reg51.h>#define uchar unsigned charuchar A[16],num;void uart() interrupt 4{if(RI) ...

相似回答