青鸟激越 C谈话基础教程 之 奈何界说变量!
发布日期:2024-12-01 14:40 点击次数:189变量界说即是告诉编译器在那儿创建变量的存储,以及奈何创建变量的存储。变量界说指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示:
type variable_list;
在这里,type 必须是一个灵验的 C 数据类型,不错是 char、w_char、int、float、double 或任何用户自界说的对象,variable_list 不错由一个或多个标志符称呼构成,多个标志符之间用逗号分隔。底下列出几个灵验的声明:
int i, j, k;
char c, ch;
float f, salary;
double d;
行 int i, j, k; 声明并界说了变量 i、j 和 k,这带领编译器创建类型为 int 的名为 i、j、k 的变量。
变量不错在声明的本事被运行化(指定一个运行值)。运行化器由一个等号,后跟一个常量抒发式构成,如下所示:
type variable_name = value;
底下列举几个实例:
extern int d = 3, f = 5; // d 和 f 的声明与运行化
int d = 3, f = 5; // 界说并运行化 d 和 f
byte z = 22; // 界说并运行化 z
char x = 'x'; // 变量 x 的值为 'x'
不带运行化的界说:带有静态存储捏续时辰的变量会被隐式运行化为 NULL(通盘字节的值齐是 0),其他通盘变量的运行值是未界说的。
C 中的变量声明 变量声明向编译器保证变量以指定的类型和称呼存在,这么编译器在不需要知谈变量齐备细节的情况下也能不绝进一步的编译。变量声明只在编译时有它的真义,在步伐相连时编译器需要骨子的变量声明。
变量的声明有两种情况:
1、一种是需要斥地存储空间的。举例:int a 在声明的本事就还是斥地了存储空间。
2、另一种是不需要斥地存储空间的,通过使用extern要津字声明变量名而不界说它。 举例:extern int a 其中变量 a 不错在别的文献中界说的。
除非有extern要津字,不然齐是变量的界说。 extern int i; //声明,不是界说 int i; //声明,亦然界说 实例 尝试底下的实例,其中,变量在头部就还是被声明,然则界说与运行化在主函数内:
实例:
#include <stdio.h>
// 函数外界说变量 x 和 y
int x;
int y;
int addtwonum()
{
// 函数内声明变量 x 和 y 为外部变量
extern int x;
extern int y;
// 给外部变量(全局变量)x 和 y 赋值
x = 1;
y = 2;
return x+y;
}
int main()
{
int result;
// 调用函数 addtwonum
result = addtwonum();
printf("result 为: %d",result);
return 0;
}
当上头的代码被编译和试验时,它会产生下列成果:
result 为: 3
要是需要在一个源文献中援用另外一个源文献中界说的变量,咱们只需在援用的文献中将变量加上 extern 要津字的声明即可。
addtwonum.c 文献代码:
#include <stdio.h>
/*外部变量声明*/
extern int x ;
extern int y ;
int addtwonum()
{
return x+y;
}
test.c 文献代码:
#include <stdio.h>
/*界说两个全局变量*/
int x=1;
int y=2;
int addtwonum();
int main(void)
{
int result;
result = addtwonum();
printf("result 为: %d\n",result);
return 0;
}
当上头的代码被编译和试验时,它会产生下列成果:
$ gcc addtwonum.c test.c -o main
$ ./main
result 为: 3
C 中的左值(Lvalues)和右值(Rvalues) C 中有两种类型的抒发式:
左值(lvalue):指向内存位置的抒发式被称为左值(lvalue)抒发式。
左值不错出当今赋值号的左边或右边。 右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是弗成对其进行赋值的抒发式,也即是说,右值不错出当今赋值号的右边,但弗成出当今赋值号的左边。 变量是左值,因此不错出当今赋值号的左边。数值型的字面值是右值,因此弗成被赋值,弗成出当今赋值号的左边。底下是一个灵验的语句:
int g = 20;
然则底下这个就不是一个灵验的语句,会生成编译时错误:
10 = 20;