c语言定义全局数组问题?
为什么我的放到子函数以外就不行?必须要放进子函数里,应该怎么做?#defineuintunsignedint#defineucharunsignedcharvoidsz(...
为什么我的放到子函数以外就不行?必须要放进子函数里,应该怎么做?
#define uint unsigned int
#define uchar unsigned char
void sz();
void ys(uint);
void wd();
void R();
void G();
uchar led1,led2,led3,led4;
uchar x=100;
void sz()
{
if(P04==0)
{
G();
}
else {
R();
}
}
void G()
{
uchar a[]={0xc0,0xcf,0xa4,0x86,0x8b,0x92,0x90,0xc3,0x80,0x82,0x7f,0xb3,0xff};
uchar A[]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90,0x7f,0xb3,0xff};
uchar wei[]={0x00,0x10,0x20,0x40,0x80};
P14=1;
P2=A[led1];
P14=0;
P13=1;
P2=wei[1];
P13=0;
ys(x);
//-------------------------
P14=1;
P2=A[led2];
P14=0;
P13=1;
P2=wei[2];
P13=0;
ys(x);
//-------------------------
P14=1;
P2=a[led3];
P14=0;
P13=1;
P2=wei[3];
P13=0;
ys(x);
//-------------------------
P14=1;
P2=a[led4];
P14=0;
P13=1;
P2=wei[4];
P13=0;
ys(x);
}
void R()
{
uchar a[]={0xc0,0xcf,0xa4,0x86,0x8b,0x92,0x90,0xc3,0x80,0x82,0x7f,0xb3,0xff};
uchar A[]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90,0x7f,0xb3,0xff};
uchar WEI[]={0x00,0x08,0x04,0x02,0x01};
P14=1;
P2=A[led1];
P14=0;
P13=1;
P2=WEI[1];
P13=0;
ys(x);
//****************************
P14=1;
P2=A[led2];
P14=0;
P13=1;
P2=WEI[2];
P13=0;
ys(x);
//****************************
P14=1;
P2=a[led3];
P14=0;
P13=1;
P2=WEI[3];
P13=0;
ys(x);
//****************************
P14=1;
P2=a[led4];
P14=0;
P13=1;
P2=WEI[4];
P13=0;
ys(x);
} 展开
#define uint unsigned int
#define uchar unsigned char
void sz();
void ys(uint);
void wd();
void R();
void G();
uchar led1,led2,led3,led4;
uchar x=100;
void sz()
{
if(P04==0)
{
G();
}
else {
R();
}
}
void G()
{
uchar a[]={0xc0,0xcf,0xa4,0x86,0x8b,0x92,0x90,0xc3,0x80,0x82,0x7f,0xb3,0xff};
uchar A[]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90,0x7f,0xb3,0xff};
uchar wei[]={0x00,0x10,0x20,0x40,0x80};
P14=1;
P2=A[led1];
P14=0;
P13=1;
P2=wei[1];
P13=0;
ys(x);
//-------------------------
P14=1;
P2=A[led2];
P14=0;
P13=1;
P2=wei[2];
P13=0;
ys(x);
//-------------------------
P14=1;
P2=a[led3];
P14=0;
P13=1;
P2=wei[3];
P13=0;
ys(x);
//-------------------------
P14=1;
P2=a[led4];
P14=0;
P13=1;
P2=wei[4];
P13=0;
ys(x);
}
void R()
{
uchar a[]={0xc0,0xcf,0xa4,0x86,0x8b,0x92,0x90,0xc3,0x80,0x82,0x7f,0xb3,0xff};
uchar A[]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90,0x7f,0xb3,0xff};
uchar WEI[]={0x00,0x08,0x04,0x02,0x01};
P14=1;
P2=A[led1];
P14=0;
P13=1;
P2=WEI[1];
P13=0;
ys(x);
//****************************
P14=1;
P2=A[led2];
P14=0;
P13=1;
P2=WEI[2];
P13=0;
ys(x);
//****************************
P14=1;
P2=a[led3];
P14=0;
P13=1;
P2=WEI[3];
P13=0;
ys(x);
//****************************
P14=1;
P2=a[led4];
P14=0;
P13=1;
P2=WEI[4];
P13=0;
ys(x);
} 展开
3个回答
展开全部
在C语言中,全局变量和函数声明及定义并列,也就是说,声明在最外层作用域的变量即为全局变量
如在如下程序中
int i;
int main()
{
int i_copy = i;
i = 9;
return 0;
}
int i就是一个全局变量,故在main函数中可以调用或修改i的值
所以,定义数组也和普通全局变量的方法相同,如
char str[10];
int main()
{
str[0] = 'a';
str[1] = '\0';
return 0;
}
但是有几点需要注意:
C中自上向下语法分析和编译语法树,如果要让所有函数都能调用该全局变量,就要把其放在所有函数定义之前,确保声明的作用域覆盖整个程序;
在全局变量声明时,其初始值必须为编译时常量,不能为变量;
若要使用程序外的全局变量,需要在修饰符中加入extern关键字,并不要忘了和原本定义处链接
如在如下程序中
int i;
int main()
{
int i_copy = i;
i = 9;
return 0;
}
int i就是一个全局变量,故在main函数中可以调用或修改i的值
所以,定义数组也和普通全局变量的方法相同,如
char str[10];
int main()
{
str[0] = 'a';
str[1] = '\0';
return 0;
}
但是有几点需要注意:
C中自上向下语法分析和编译语法树,如果要让所有函数都能调用该全局变量,就要把其放在所有函数定义之前,确保声明的作用域覆盖整个程序;
在全局变量声明时,其初始值必须为编译时常量,不能为变量;
若要使用程序外的全局变量,需要在修饰符中加入extern关键字,并不要忘了和原本定义处链接
2013-09-10
展开全部
单片机的LED控制?数组在子函数外作全局变量是可以的,我就经常这么定义。你的程序主函数呢?void main?问题不在子函数的数组调用这。全局数组的定义语句一般是uchar code table[] ={};和一般的数组定义不同,必须加code,你看是不是这个问题。详细你可以找我私戳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/***************************************************************************
把你的所有函数体写在main函数前面,就不用在前面进行函数声明;
数组什么时候加code,这个是有讲究的,在程序运行中不对数组里的内容
进行修改时,这时可以加上code;如果在程序运行中要对数组里的内容进行
修改,那么就不能加上code;比如在你程序中就可以加上code.
****************************************************************************/
#define uint unsigned int
#define uchar unsigned char
uchar a[]={0xc0,0xcf,0xa4,0x86,0x8b,0x92,0x90,0xc3,0x80,0x82,0x7f,0xb3,0xff};
uchar A[]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90,0x7f,0xb3,0xff};
uchar WEI[]={0x00,0x08,0x04,0x02,0x01};
uchar led1,led2,led3,led4;
uchar x=100;
void sz()
{
if(P04==0)
{
G();
}
else
{
R();
}
}
void G()
{
P14=1;
P2=A[led1];
P14=0;
P13=1;
P2=wei[1];
P13=0;
ys(x);
//-------------------------
P14=1;
P2=A[led2];
P14=0;
P13=1;
P2=wei[2];
P13=0;
ys(x);
//-------------------------
P14=1;
P2=a[led3];
P14=0;
P13=1;
P2=wei[3];
P13=0;
ys(x);
//-------------------------
P14=1;
P2=a[led4];
P14=0;
P13=1;
P2=wei[4];
P13=0;
ys(x);
}
void R()
{
P14=1;
P2=A[led1];
P14=0;
P13=1;
P2=WEI[1];
P13=0;
ys(x);
//****************************
P14=1;
P2=A[led2];
P14=0;
P13=1;
P2=WEI[2];
P13=0;
ys(x);
//****************************
P14=1;
P2=a[led3];
P14=0;
P13=1;
P2=WEI[3];
P13=0;
ys(x);
//****************************
P14=1;
P2=a[led4];
P14=0;
P13=1;
P2=WEI[4];
P13=0;
ys(x);
}
void main( void )
{
}
把你的所有函数体写在main函数前面,就不用在前面进行函数声明;
数组什么时候加code,这个是有讲究的,在程序运行中不对数组里的内容
进行修改时,这时可以加上code;如果在程序运行中要对数组里的内容进行
修改,那么就不能加上code;比如在你程序中就可以加上code.
****************************************************************************/
#define uint unsigned int
#define uchar unsigned char
uchar a[]={0xc0,0xcf,0xa4,0x86,0x8b,0x92,0x90,0xc3,0x80,0x82,0x7f,0xb3,0xff};
uchar A[]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90,0x7f,0xb3,0xff};
uchar WEI[]={0x00,0x08,0x04,0x02,0x01};
uchar led1,led2,led3,led4;
uchar x=100;
void sz()
{
if(P04==0)
{
G();
}
else
{
R();
}
}
void G()
{
P14=1;
P2=A[led1];
P14=0;
P13=1;
P2=wei[1];
P13=0;
ys(x);
//-------------------------
P14=1;
P2=A[led2];
P14=0;
P13=1;
P2=wei[2];
P13=0;
ys(x);
//-------------------------
P14=1;
P2=a[led3];
P14=0;
P13=1;
P2=wei[3];
P13=0;
ys(x);
//-------------------------
P14=1;
P2=a[led4];
P14=0;
P13=1;
P2=wei[4];
P13=0;
ys(x);
}
void R()
{
P14=1;
P2=A[led1];
P14=0;
P13=1;
P2=WEI[1];
P13=0;
ys(x);
//****************************
P14=1;
P2=A[led2];
P14=0;
P13=1;
P2=WEI[2];
P13=0;
ys(x);
//****************************
P14=1;
P2=a[led3];
P14=0;
P13=1;
P2=WEI[3];
P13=0;
ys(x);
//****************************
P14=1;
P2=a[led4];
P14=0;
P13=1;
P2=WEI[4];
P13=0;
ys(x);
}
void main( void )
{
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询