小比特4

时间:2022-10-03 19:54:58

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