不是inta[] 而是例如int a[10]这种。括号内一定要有个常量数字。
专注于为中小企业提供网站建设、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业固阳免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
我们可以这样定义
#define N 5
int a[N]
这表明了数组名为a;数组有5个元素;分别是a[0]到a[4];
对于数组来说;数组是变量的集合,因此数组也具有与变量相同的数据类型和储存类型。数组的类型就是它所有的变量的类型。在定义数组时,应在数组名前对数组的类型加以确定。如上面的int a[10];则表明了数组内元素均为整形。
所有当表示浮点型可以定义为例如float a[10]。 举例如下:
扩展资料
数组名是由用户命名的C语言标识符,要遵循标识符命名规则。数组名表示数组存储区域的首地址。数组的首地址也就是第一个元素的地址。数组名是一个地址常量,不能对它赋值。
数组名后是由方括号括起来的常量表达式,不能使用其他括号
1、通过函数的参数显示传递:
a(int
a)
{
a
=
a+2;
}
b(void)
{
int
b
=
3;
a(b);
}
在函数a中a作为一个参数传入函数中进行运算,那么a就可以算作是a的输入,然后在程序内部a进行了运算后值变了,那么运算后的a又算作是a函数的输出。
2、通过全局变量隐式传递:
全局变量你应该知道吧,简单点说就是作用域涵盖整个程序的变量(当然要看具体情况)。
假设a为int型全局变量,初始值为1:int
a
=
1;
a()
{
a
=
a
+
2;
}
b()
{
a
=
a
+
3;
}
main()
{
a();
b();
a();
}
通过main函数我们可以看到,程序首先执行的是函数a,那么执行完函数a后全局变量a的值由初始值1变成了3,然后又继续执行函数b,注意此时函数b也是对a进行运算,那么此时全局变量a成了b的输入,运算后a的值为了6,此时a为b的输出。那么也就是说全局变量a在经过a函数的改变后作为一个输入隐式的传入了b函数,然后经过b函数的运算又算作是b的输出。执行过b函数后程序又遇到了a函数,那么此时经过b函数运算的a又作为a函数的一个输入了。
可以这样调用。
int b=0指的是默认参数,调用时传入或不传入b都行,如果不传入b的话,那么b的值就是0。
另外注意只有最后面的参数可以是默认参数。
C语言的变量初始化,就是在定义变量的时候,赋予一个初始值。
形式为
type var_name = init_value;
其中init_value就是初始化值了。
类似于
type var_name;
var_name = init_value;
不过,基于编译器的实现,一般初始化值的方式要比先定义后赋值更高效。另外,有些初始化是必须的。比如常量的定义,必须在定义的时候赋予初始化值。
或者通过参数传进去,如
void Init(stu_handlertus *hdl)
{
hdl-count = 1;
for(i = 0; i 50; ++i)
{
hdl-rtus[i].rtuindex = 0
hdl-rtus[i].a = 0;
hdl-rtus[i].b = 0;
hdl-rtus[i].c = 0;
}
}
调用
Init( handlertus);
即可。
不过结构:
struct stu_handlertus
{
int count;
struct stu_handlertus rtus[50];
}handlertus;
是错误的,原因是这一句
struct stu_handlertus rtus[50];
这样就不知道结构stu_handlertus的大小了。所以上面改为
struct stu_handlertu rtus[50];
两个结构名字这么接近,是一个不好的风格。
void InitStack(SqStack *S)
{
int i;
for(i=0;iN;i++)
S-base[i]=0;
S-top=0;
}
C中函数参数是按值传递,你那样写修改的是复制的副本,本身没有修改,传递指针,间接修改。
其他的函数也一样,都需要传递指针。