接上一篇:C语言_数据类型[详细分析]
今天来向大家分享C语言中的常量和变量以及变量的存储类别,都是博主的一些笔记,有不懂的可以评论区讨论噢,话不多说,上菜:
此博主在CSDN发布的文章目录:我的CSDN目录,作为博主在CSDN上发布的文章类型导读
常量:常量就是在程序运行过程中不可被改变的量。
数值型常量包括整型常量和实型常量。
用单直撇括起来。
例如:’a’
用一组双引号括起来。
例如:“aa”
\' 单引号
\" 双引号
\\ 反斜杠
\0 空字符
\a 响铃
\b 后退
\f 走纸
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\xnnn 表示十六进制数(nnn)
用#define定义符号常量
符号常量:#define 标识符 常量
基本型:int 4个字节
short(短型) 2个字节
long(长型) 4个字节 赋值时加L;
1、单精度
float 四个字节 有效数字6位 赋值时需要加f;
2、双精度
double 8个字节 有效数字15
3、长双精度
long double 8/16个字节 有效数字15/19
用char定义
char(字符型) 1个字节
#if 1
#include
int main()
{
char c='a';
//char a="assa";错误定义
printf("%c\n",c);
//printf("%s\n",a);
}
#endif
变量概念:
概念:既能读又能写的内存对象,称为变量;若一旦初始化后不能修改的对象则称为常量。
变量定义形式: 类型 标识符, 标识符, … , 标识符 ;
例如:
int x ;
int wordCut , Radius , Height ;
double FlightTime , Mileage , Speed ;
(1)程序通过变量来申请和命名内存空间 int a = 0
(2)通过变量名访问内存空间
(一段连续)内存空间的别名(是一个门牌号)
(3)修改变量有几种方法?
1、直接
2、间接。内存有地址编号,拿到地址编号也可以修改内存;于是指针横空出世了。(编程案例)
3、内存空间可以再取给别名吗?
可以
(4)数据类型和变量的关系
通过数据类型定义变量
(5)总结
1、对内存,可读可写;
2、通过变量往内存读写数据;
3、不是向变量读写数据,而是向变量所代表的内存空间中写数据。
int main()
{
//
//2种方法,通过变量直接操作内存
// 通过内存编号操作内存
int i = 0;
printf("&i:%d\n", &i);
*((int *)(1245024)) = 10;
printf("i:%d", i);
printf("hello....\n");
getchar();
return 0;
}
//指针指向谁,就把谁的地址赋给指针
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
void main44()
{
int a ;
int b;
char * p ;
//p = 0xaa11
a = 10; //1 直接赋值 //cpu里面执行
printf("&a: %d\n", &a);
//2间接赋值 ==直接通过内存
*((int*)1245024) = 200;
printf("a: %d\n", a);
{
p = 1245024; // 间接赋值 通过指针
*p = 300;
}
//3 对内存空间能不能在取 别名..... C++ 引用 抛砖.....
//1245024
printf("hello...\n");
system("pause");
return ;
}
静态存储就是指程序运行分配的固定的存储方式,而动态存储则是在程序运行期间根据需要动态地分配内存空间。
动态存储在堆区,一般用malloc分配内存
auto:函数中的局部变量,动态的分配存储空间,数据存储在动态存储区中,在调用该函数时,系统会给他们分配存储空间,在函数调用结束后自动释放这些空间,即修饰一个局部变量为自动的,auto可以省略,因为局部变量的存储方式默认为自动的。
static:静态局部变量,属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放,即始终保持变量运算后的值。
register:为了提高效率,C语言允许将局部变量的值放在CPU中的寄存器中,这种变量叫寄存器变量,只有局部自动变量和形参可以作为寄存器变量。
extern:外部变量(即全局变量)是指函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件末尾结束。如果外部变量不是在文件的开头定义,其有效的作用范围只限于定义出到文件终了。
#if 1
#include
void AddOne()
{
//auto int i=1.1;“auto”不能与任何其他类型说明符组合
auto b=0;
b=b+1;
printf("%d\n",b);}
int main()
{
printf("auto第一次调用:");
AddOne();
printf("auto第二次调用:");
AddOne();//结论,auto可以省略,局部变量的存储方式默认为自动的。
return 0;
}
#endif
#if 1
#include
void AddOne()
{
static int b=0;
b=b+1;
printf("%d\n",b);
}
int main ()
{
printf("static第一次调用:");
AddOne();
printf("static第二次调用:");
AddOne();//结论:static会存储上一次使用后的值
return 0;}
#endif
#if 1
#include
void ss(int a)
{
printf("%d\n",a);
}
int main ()
{
register int i=100;
ss(i);
printf("%d\n",i);
return 0;
}
#endif
/*//x1文件中///*/
#if 1
#include
int main()
{
extern int iExtern;
printf("%d",iExtern);
}
#endif
/*//x2文件中///*/
#include
int iExtern=100;
//使用static计算3的立方
#if 1
#include
int adda(int x)
{
static int b=0;
b=b+x;
return b;}
int main11()
{
int a=3,b;
b=adda(a);
b=adda(a);
b=adda(a);
printf("%d\n",b);
/*int a=3,b,i;for(i=0;i<3;i++){b=adda(a);}printf("%d\n",b);*/}
#endif
位bit:存放一位二进制数,即0或1,是最小的额存储单位。
字节byte:8个为二进制位为一个字节,单位B。
KB、MB、GB……等等,这些就是基本的数据存储单位了。
换算:1B=8b;1KB=1024B;1MB=1024KB……
以上就是本次的分享了,希望对大家有所帮助,欢迎关注博主一起学习更多的新知识!