目录:
1.#define
(1)#define可以定义常量
#include<stdio.h>
#define A 20
int main()
{
int b;
printf("请输入一个数\n");
scanf_s("%d", &b);
if (b < A)
{
printf("b小,b=%d\n",b);
}
else
{
printf("A小,A=%d\n", A);
}
return 0;
}
注:如上代码相当于给A赋值为20,如果改#define后的数字相当于改变代码中所有的A的值
(2)#define定义宏函数
函数
#include<stdio.h>
int Add(int x,int y)
{
return x+y;
}
int main()
{
Add(1, 2);
printf("%d\n",Add(1,2)*3);
return 0;
}
宏函数——>不是真正的函数 用法相似 速度快 宏替换
#include<stdio.h>
#define ADD(x,y) (x+y)
int main()
{
ADD(1, 2);
printf("%d\n",ADD(1,2)*3);
return 0;
}
注:宏的名称建议大写
2.指针
程序的角度看内存是多大?
运行起来的程序叫进程,每个进程有多大的内存空间可用?
具体要看他是32位还是64位(32位系统下面只有32位程序;64位系统下面既有32位也有64位的程序具体取决于编译器配置)
(1)32位进程和64位进程有何区别?
区别在于他们可用的空间不一样大
32位的进程,内存空间:2^32byte == 4G
(2^30 byte=1024 *1024 *1024byte=1G)
64位的进程,内存空间:2^64byte
1024byte = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
(2)指针就是一个地址;
#include<stdio.h>
int main()
{
int a = 10;
int b = 'a';
static int c = 20;
printf("%u\n",&a);
printf("%u\n", &b);
printf("%u\n", &c);
printf("\n");
printf("%p\n", &a);
printf("%p\n", &b);
printf("%p\n", &c);
return 0;
}
注:1.如上代码就是求a,b,c的地址
2.%a 表示无符号整形;
%p表示按十六进制输出数据
(3)指针变量是存地址;
(定义变量去存a,b,c的地址那么这个变量就叫指针变量)
eg:int* a = &a;存a的地址
#include<stdio.h>
int main()
{
int a = 10;
char b = 'a';
static int c = 0;
int* pa = &a;
*pa = 20; //解引用 “*”的作用是引用指针向变量
char* pb = &b;
*pb = 'b'; //解引用
pa = &c; //c的地址存给pa
// 32进程指针是 4byte 64位进程 指针是8byte
printf("%d\n", sizeof(pa));
printf("%d\n", sizeof(pb));
return 0;
}
3.结构体(多个数据组合)
#include<stdio.h>
struct student
{
char name[5];
int age;
char addr[20];
};
int main()
{
struct student a = { "张三", 21, "北京市朝阳区" };//结构体初始化
struct student b = { "李四", 22, "陕西省西安市" };
printf("%s,%d,%s\n",a.name,a.age,a.addr);
printf("%s,%d,%s\n", b.name, b.age, b.addr);
struct student *pa = &a;
printf("%s,%d,%s\n", pa->name, pa->age, pa->addr);//用指针访问
}
4.什么是语句
C语言中有一个;隔开的就是一个语句
eg:printf(“Hello”);
1+2;
5.if语句
语法结构:
if(表达式)
语句;
或
if(表达式)
语句1;
else
语句2
或多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
(1)多分支语句
#include<stdio.h>
int main()
{
int age;
scanf_s("%d", &age);
if (age < 18)
{
printf("未成年人\n");
}
else if (age >= 18 && age <= 30)
{
printf("青年人\n");
}
else if (age>30 && age <= 60)
{
printf("中年人\n");
}
else
printf("老年人");
return 0;
}
(2)else和跟他最近的if匹配
#include<stdio.h>
int main()
{
int a = 1;
int b = 2;
if (a == 1)
{
if (b == 2)
{
printf("哈哈\n");
}
else
printf("呵呵\n");
}
}
注:else和跟他最近的那个if匹配
(3)输出100以内的偶数
#include<stdio.h>
int main()
{
int a = 0;
while (a <= 100)
{
if (a % 2 == 0)
{
printf("%d\n", a);
}
++a;
}
return 0;
}