#define宏,指针,结构体(struct),if语句(求100以内的偶数)

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;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_50886514/article/details/110181631
今日推荐