标签:value 大小 变量定义 highlight 创建 不同 文件中 pre ret
/*
变量是程序可操作的存储区的名称,c中每个变量都有特定的类型,类型决定了变量存储的大小和布局,
该范围内的值都可以存储在内存中,运算符可应用于变量上。
变量的名称可以由字母、数字、下划线组成。但是开头必须要是字母或者下划线。大写和小写不同,C对大小写是敏感的。
*/
//c中变量的定义
/*
变量的定义是告诉编译器在何处创建变量的存储,以及如何存储。定义格式如下
type variation1,variation2,······
这里的type必须是有效的C数据类型,可以一次定义多个变量,多个变量之间用,分割
举个栗子:
int i,j,k;
char c,ch;
float f,salary;
double d;
当然变量也可以在声明的时候被初始化,也就是赋给一个值
type variation=value;
举个栗子:
int d=3,f=5; 定义并初始化d和f
byte z=22; 定义并初始化z
char x=‘X‘; 变量的值为‘X‘
*/
//c语言中变量的声明
/*
变量声明向编译器保证变量以指定的类型和名称存在,这样编译器在不知道变量的具体细节的情况下也可以继续编译
变量声明只在编译时有它的意义,在程序连接时,编译器需要实际的变量声明。
变量的声明有实际两种情况:
1.需要建立存储空间的,如int a,在声明的时候就已经建立的存储空间
2.不需要建立存储空间的,如extern int a,使用extern关键字声明而不定义它,使得变量a可以在别的文件中定义
除非有extern关键字,否则都是变量的定义
extern int i; 声明,不是定义
int i; 声明,也是定义
*/
#include <stdio.h>
//变量声明
extern int a,b;
extern int c;
extern float f;
int main01()
{
//变量定义
int a,b;
int c;
float f;
//初始化
a = 10;
b = 20;
c = a+b;
f = a+b;
printf("a=%d,b=%d\n",a,b);
printf("c=%d\n",c);
printf("f=%f\n",f);
}
/*
a=10,b=20
c=30
f=30.000000
*/
//C中的左值和右值
/*
通俗的话将,能被赋值的就叫做左值。比方说int a;
这个a就可以被赋值,那么a就是左值
只能赋值给别人的值叫做右值,比方说20,‘a‘,这些常量只能赋值给别人
不可能出现20=xxx,这种情况
左值可以出现在=的两边,既可以被赋值,也可以给别的变量的赋值
右值只可以出现在=的右边,只能将自己赋值给别人
*/
//笔记
/*
extern int a; //声明一个全局变量a
int a; //定义一个全局变量a
extern int a=0; //定义一个全局变量a并赋予初值,一旦赋予初值,必定是定义,会被分配存储空间
int a=0; //定义一个全局变量a,并赋予初值
声明之后不能直接使用这个全局变量,必须定义之后才能使用
第四个等于第三个,都是定义一个可以使用的全局变量,并给予初值
尽管很相似,但还是有很多不同的,声明可以多次,但是定义只能出现一次。
不管是int a;还是int a=0;都是只能出现一次的,而extern int a;可以出现多次
当你要引用一个全局变量的时候,必须要使用extern int a;
因为extern省略了的话,就变成了int a,这是一个定义而不是声明
*/
/*
1.当需要保存数据的时候,使用左值
2.当需要读取数据的时候,使用右值
左值可以当右值使用
int n=1; //这里的n是左值
int m;
m = n+2; // 这里的n是右值
右值不可能转化为左值
*/
/*
变量的内存寻址
1.内存地址由大到小,优先分配内存地址比较大的字节给变量,所以变量越先被定义,内存地址就越大
2.变量地址的获取方式,&变量名
3.输出地址的方式:%p
*/
int main02()
{
int a=1;
int b=1;
printf("&a=%p,&b=%p\n", &a,&b); //&a=0061FF2C,&b=0061FF28,可以看到a的内存地址比较大
return 0;
}
//变量一定要初始化才可以使用,因为在C语言中没有初始化的值默认是一个很大的值
int main()
{
int a;
printf("a=%d\n", a); //a=4194432
return 0;
}
标签:value 大小 变量定义 highlight 创建 不同 文件中 pre ret
原文地址:https://www.cnblogs.com/traditional/p/9463608.html