1.常见关键字
auto break case char continue default do double else enum extern float for goto if int long register return short signedsizeof static struct switch typedef union unsigned void volatile while
1.1关键字typedef
typedef 顾名思义是类型定义,这里应该理解为类型重命名。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名
typedef unsigned int uint_32;
int main()
{
//num1和num2,这两个变量的类型是一样的
unsigned int num1 = 0;
uint_32 num2 = 0;
return 0;
}
1.2关键字stratic
static修饰局部变量——局部变量的生命周期变长
static修饰全局变量改变了变量的作用域——让静态的全局变量只能在自己所在的源文件内部使用,出了文件就没法再使用了
static修饰函数,改变了函数的链接属性,把外部链接属性变成内部属性
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void test()
{
int a = 1;
a++;
printf("a=%d\n",a);
}
int main()
{
int i = 0;
while (i < 5)
{
test();//输出结果永远是2
i++;
};
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void test()
{
static int a = 1;//a是一个静态变量
a++;
printf("a=%d\n",a);//2 3 4 5 6
}
int main()
{
int i = 0;
while (i < 5)
{
test();//
i++;
};
return 0;
}
1.3#define 定义常量和宏
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//#define MAX 100;//定义标识符常量
int Max(int x,int y)
{
if (x > y)
return x;
else
return y;
}
//#define 定义宏
#define MAX(X,Y)(X>Y?X:Y)
int main()
{
int a = 10;
int b = 20;
//函数
int max = Max(a,b);
printf("max=%d\n",max);
//宏
max = MAX(a, b);
printf("max=%d\n", max);
return 0;
}
2.指针
2.1内存
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int num = 10;
#//取出num的地址
//注:这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
printf("%p\n", &num);//打印地址,%p是以地址的形式打印
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int num = 10;
int *p = #
*p = 20;
return 0;
}
2.2指针变量的大小
#include <stdio.h>
//指针变量的大小取决于地址的大小
//32位平台下地址是32个bit位(即4个字节)
//64位平台下地址是64个bit位(即8个字节)
int main()
{
printf("%d\n", sizeof(char *));
printf("%d\n", sizeof(short *));
printf("%d\n", sizeof(int *));
printf("%d\n", sizeof(double *));
return 0;
}