什么是定义?什么是声明?它们之间的区别是什么?
所谓定义就是(编译器)创建一个对象,为这个对象分配一块内存,并给它取上一个名字,这个名字就是就是我们经常所说的变量名或对象名。
声明有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 _ __ ___ ____ //(用下划线来替代头文件的东西造成掩饰,但是可以运行并且输出)