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

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

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

声明有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 _ __ ___ ____                //(用下划线来替代头文件的东西造成掩饰,但是可以运行并且输出)




























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值