C语言中的常见关键字
auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static(静态的) struct(结构体关键字) switch typedef(类型定义) union(联合体/共用体) unsigned void(无/空) volatile while
局部变量又叫自动变量
int main()
{
auto int a = 10;
return 0;}
计算机 存储数据:
寄存器(register)
高速缓存 CPU-*处理器
内存 8G/4G/16G
int main()
{
refister int a =10;//建议把a定义成寄存器变量
return 0;
}
int main()
{
int a=10;
a=-2;
//int定义的变量是符号的(signed int)
//如果定义unsigned int num=-1;结果是1,//意思是无符号数
return 0;
}
关于typedef-类型定义-类型重定义
int main()
{
typedef unsigned int u_int;//这里的unsigned int与u_int等价
unsigned int num=20;
u_int num2=20;
return 0;
}
关键字static
#include<stdio.h>
void test()
{
int a=1;
a++;
printf("a=%d\n,a");
}
int main()
{
int i=0;
while(i<5)
{
test();
i++;
}
return 0;
}//这里的代码的每个执行结果都是a=2
关于static的用法(上下两个代码块相比)
#include<stdio.h>
void test()
{
static int a=1;//a变成了静态的局部变量,
//static修饰局部变量,局部变量的生命周期变长了
a++;
printf("a=%d\n,a");
}
int main()
{
int i=0;
while(i<5)
{
test();
i++;
}
return 0;
}//这里的结果是2 3 4 5 6
定义的全局变量可以放在其他文件中使用,引用的时候要加上extern声明外部符号
但如果变量的前面加上static,则不能够使用,这里的static改变了变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就没办法使用
static修饰函数改变了函数的链接属性
#define定义常量和宏
#include<stdio.h>
#define MAX 100 //#define定义的标识符常量
int main() //#define定义宏需要带参数
{
int a=MAX;
return 0;
}
//函数的实现
int Max(int x,int y)
{
if(x>y)
return x;
else
return y;
}
//宏的定义
#define MAX(X,Y) (X>Y?X:Y)
int main()
{
int a=10;
int b=20;
//函数
int max=(a,b);
printf("max=%d\n",max)
//宏的方式
max=MAX(a,b)
printf("max=%d\n",max);
return 0;
}
指针
如何产生地址
32位 32根地址线/数据线 64位
正电和负电
1 0
00000000000000000000000000000000
00000000000000000000000000000001
...
....
11111111111111111111111111111111 2的32次方个地址
1个内存单元是一个字节
int main()
{
int a=10;
int* p=&a;//取地址
printf("%p\n",&a);
*p=20;//*解引用操作符
return 0;
}//有一种变量是用来存放地址的-指针变量
int main()
{
char ch='w';
char* pc=&ch;
*pc='a';
printf("%c\n",ch);
return 0;
}结果a