C语言基础 Day 1
一、定义一个变量
变量:在运行过程中可以改变的。
作用域:花括号之间;
生命周期:程序/函数运行完,变量内存自动回收。
定义变量时可用数字 字母 下划线 组成
局部变量未初始化打印出来为error,默认值的16进制为0xcccccc;
二、定义一个常量
常量:在运行过程中不能改变的。
定义常变量时一定要同时初始化.
const:修饰的变量叫做常变量
三、宏定义
宏定义时变量要大写 。
后面的分号尽量不要加。例如int arr[PI]={};如果加了括号加会报错;会替换成arr[PI;]
重点: 预编译:宏替换,注释的替换(替换为空格);头文件的引入;
四、栈与堆
- 栈stack(包括栈顶和栈顶);
栈的特性:先进先出 。 1M—2M;
main()函数所有定义的变量都存储在堆里。
2.堆heap
五、运算符
():强转,函数参数;提升优先级
~ :按位取反;
>>:按位右移;
<<:按位左移
^:异或
&:与
|:或
例如: 11:0000 1101;
~11:1111 0010;
11>>1:0000 0110; 右移补符号位 右移相当于除法
11<<1:0001 1010 左移补数字零 左移相当于乘法
一个数扩大n倍 ,则左移2位 相当于11*2^n;
13:0000 1101
11&13: 0000 1001
11|13: 0000 1111
11^13: 0000 0110 异或:一样时为0,不一样为1.
++ --:自增,自减
```int a = 10;
int b = a++;//tmp=a;b=tmp;a++;
int c = 10 ;
int d = ++c;//++c;tmp=c;d=tmp
printf("a==%d/n b==%d/nc==%d/nd==%d/n",&a&b&c&d);
a== 11 b==10 c==11 d==11
&&、||:逻辑与,逻辑或
int i=1,i2=0,i3=2;
if(i++&&i2++&&i3++)//输出的 i=2,i2=0,i3=2 并且不执行if的内容
int i=1,i2=0,i3=2;
if(i++||i2++||i3++)//输出的 i=2,i2=0,i3=2 并且执行if的内容
&& 全为真执行if语句,if条件内遇到假后面语句不执行。
|| 有一个为真执行if语句,if条件内遇到真后面语句不执行。
*:指针,解引用,乘号
int a = 10;
int* p = &a;
* p = 100;//此时a的值为100
int** pp = &p;//二级指针
**pp = 1000;//此时a的值为1000
sizeof:求字节数
int* p = &a;
char* p = (char*)&a;`
cout<<sizeof(p);//所有的指针类型字节数都为4
cout<<sizeof p;
cout<<sizeof(int);
cout<<sizeof(++a);//sizeof在编译时期,因此不管里面运算值,不参与运算只求字节数。