您的位置:首页 > 编程语言 > C#

变量和常量 定义和声明的其区别

2016-07-26 21:12 1006 查看

什么是定义?什么是声明?它们之间的区别是什么?

所谓定义就是(编译器)创建一个对象,为这个对象分配一块内存,并给它取上一个名字,这个名字就是就是我们经常所说的变量名或对象名。

声明有2重含义:

(1) 告诉编译器,这个名字已经匹配到一块内存上,下面的代码用到变量或者对象是在别的地方定义的。声明可以出现多次。

(2) 告诉编译器,这个名字已经被预定了,别的地方再也不能用它来作为变量名或对象名。

定义和声明的最重要区别就是:

定义创建对象并为这个对象分配了内存,声明没有分配内存。

如: extern int a;声明一个变量

extern Int a=56;定义一个变量

int a=56; int a;均为定义一个变量

变量的声明有两种情况:

1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。

2、另一种是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义的。

总之就是:把建立空间的声明称为“定义”,把不需要建立存储空间的称为“声明”。





基本类型变量的声明和定义(初始化)是同时产生的;

而对于对象来说,声明和定义是分开的。



(我们声明的最终目的是为了提前使用,即在定义之前使用,如果不需要提前使用就没有单独声明的必要,变量是如此,函数也是如此,所以声明不会分配存储空间,只有定义时才会分配存储空间。)

常量:计算机内存里不变的量

变量:经常改变的数据

变量命名的规则:1:标识符 :不能以数字开头,只能以字母或者下划线开头 而且只能由字母,数字,下划线组成 (例如C#就不可以)。函数名也是这种命名规则。

c语言中的关键字不能做标识符(例如for while char)。例如int _table = 3.14;

特例:int new=2;(new是C++里的关键字,在C中可以做标识符) ¥123(这个也可以,货币符号已经被看成字母,所以可以做标识符)

2:变量的定义,int a,b,c; (表示分别定义a,b,c三个变量并给它们一个内存,它们的内存都不同,对应各自的赋值)

也就是分为两步,分配内存 ,赋值给变量

程序的开始变量就应该初始化(也就是赋值),如果不初始化,也可以编译成功,但是执行可能会报错

3:转义字符:

\a(响铃)

\n(换行)

\b(前移一格)

\f (换页)

\ r(回车)

\t(当前光标退四格)

\\代表反斜线字符“\”

\"代表一格引号”

\’代表一格单引号’

\ddd (一到三位n进制数所代表的任意字符)

\xhh (一到两位十六进制数所代表的任意字符)

#include<stdio.h>

void main(){

putchar('\141'); 用八进制打印字母a

getchar();

}

putchar('\x61'); 用十六进制打印字母a

putchar((char)97); 用十进制打印字母a \\注意

附:用Dos命令(win+R键打开)打开应用程序时,只需要拷贝文件所在位置并且加上引号就可以运行

用vs或者记事本打开应用程序时,需要拷贝文件所在位置并且加上引号并且将 \ 改成 \\ 将 ” 改成 \" 然后运行就可以了

printf(“%d,%x”,num,&num); //%d是转换成十进制,%x是转换成十六进制 &是获取内存地址的符号

#include<stdio.h>
void main(){
int a,b,c=0;
printf( "%x, %x, %x",&a,&b,&c ); 获取变量a,b,c的内存地址
getchar();
}
#include<stdio.h>
void main(){
int a,b,c;
printf( "%x, %x, %x",&a,&b,&c );  //获取a,b,c的内存地址
a=1;
b=2;
c=a+b;
getchar();
}

#include<stdio.h>
#define pai 3.14        // 注意这个定义方式后面不用加分号  叫全局常量
void main(){
int a=5;
int rad=pai*30*30;  //定义常量的一种方式
printf("%d",a);
printf("\n");
printf("%d",rad);
printf("\n");
getchar();
}

#include<stdio.h>
void main(){
const float pai= 3.14;       //注意这种定义方式后面有分号且有等于号   叫局部常量
float rad=pai*30*30;           //定义常量的第二种方式
printf("%f",rad);
getchar();
}


附 (int %d float %f char %c )这是相互对应的

#include<stdio.h>
void main(){
int a=1;
int b=2;       //数值a和b的调换
a=a+b;
b=a-b;
a=a-b;
printf("%d,%d" , a,b);
getchar();
}


#include<stdio.h>    //入口函数
#include<stdlib.h>
void main(){
printf("姓名");
printf("\n");     //换行
printf("班级");
printf("\f");      //换页
printf("年龄");
printf("\t");      //退格
printf("兴趣");
printf("\r");       //回车
putchar('\141');     //输出八进制数所代表的字符a
putchar('\x61');    //输出十六进制数所代表的字符a
putchar((char)97);       //输出十进制数所代表的字符a
system("\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\"");  //打开谷歌浏览器
getchar();
}


#include<stdio.h>
#include<stdlib.h>
void main(){                      //输出helloworld并且同时打开计算器和记事本
printf("HelloChina");
system("start calc");
system("start notepad");
getchar();
}


最后有个关于bug的思路,不是很理解一直没运行出来

头文件 例如 china.h

#define 常量名 常量值







源文件 例如 1.cpp

#include<stdio.h>

#include"引用头文件"

void _ __ ___ ____ //(用下划线来替代头文件的东西造成掩饰,但是可以运行并且输出)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c#