C语言学习笔记

17 篇文章 1 订阅
5 篇文章 0 订阅

对自己说的话:
虽然毕业后尚未从事开发相关的工作,但是觉得自己还是喜欢这门学科,那就利用工作的空余时间捡起来!今天就说这么多,散会!—2023/3/20 0:06

day2 学习日志:

1、函数的定义及调用 Max()

int Max(int x, int y){
	if (x > y)
		return x;
	else
		return y;
}

int main(){
	int num1 = 12;
	int num2 = 19;
	int max = 0;
	max = Max(num1, num2);
	printf("最大值为:%d\n", max);
	return 0;
}

2、特殊运算符 1.后置++ 2.先置++ 3.后置-- 4.先置–

int main() {
	int a = 10;
	//1、后置++,先使用再++
	int b = a++;
	printf("a = %d,b = %d\n", a, b); //a = 11,b = 10
	//2、前置++,先++再使用
	int b = ++a;
	printf("a = %d,b = %d\n", a, b); //a = 11,b = 11
	//3、后置--,先使用再--
	int b = a--;
	printf("a = %d,b = %d\n", a, b); //a = 9,b = 10
	//4、前置--,先--再使用
	int b = --a;
	printf("a = %d,b = %d\n", a, b); //a = 9,b = 9
	return 0;
}

3、条件操作符(三目操作符) exp1 ? exp2 ,exp3

int main() {
	int a = 12;
	int b = 15;
	int max = 0;
	max = a > b ? a : b;
	printf("max = %d", max);
	return 0;
}

4、关键字:

  1. typedef - 类型定义 - 类型重定义
typedef unsigned int u_int //将unsigned int名字简化为u_int
  1. static
    static - 修饰局部变量(局部变量生命周期变长)
void test() {
	int a = 0;
	//static int a = 0;
	a++;
	printf("这是第%d行。\n", a);
}
int main() {
	int i = 0;
	while (i < 5) {
		test();
		i++;
	}
	return 0;
}
这是第1行。
这是第1行。
这是第1行。
这是第1行。
这是第1行。
void test() {
	//int a = 0;
	static int a = 0;
	a++;
	printf("这是第%d行。\n", a);
}
int main() {
	int i = 0;
	while (i < 5) {
		test();
		i++;
	}
	return 0;
}
这是第1行。
这是第2行。
这是第3行。
这是第4行。
这是第5行。

static - 修饰全局变量(改变了变量的作用域)
extern - 声明外部函数/变量

//1_1.c源文件中
int g_val = 2023;
//1.c源文件
int main() {
	extern int g_val;
	printf("g_val = %d\n", g_val);
	return 0;
}

输出:

g_val = 2023

修改代码后:

//1_1.c源文件中
static int g_val = 2023;
//1.c源文件
int main() {
	extern int g_val;
	printf("g_val = %d\n", g_val);
	return 0;
}

运行后报错:
原因就是g_val变量只能在定义的源文件中使用,出了此文件无法被使用,即改变了变量的作用域

1>ex2.obj : error LNK2001: 无法解析的外部符号 g_val
1>E:\C student Files\Code\student_day2\x64\Debug\student_day2.exe : fatal error LNK1120: 1 个无法解析的外部命令

static - 修饰函数(改变了函数作用域/链接属性)
同修饰变量一样,限制了函数的使用

  1. define - 定义全局变量/函数
    例如比较数值大小的两种方法:
//1_1.c源文件中
int Max(int x, int y) {
	if (x > y)
		return x;
	else
		return y;
}
//1.c源文件
#define max(x,y) (x>y?x:y)
extern int Max(int, int);
int main() {
	int a = 7;
	int b = 9;
	int c = 13;
	int d = 17;
	int max1 = max(a, b);
	printf("max1 = %d\n", max1);
	int max2 = Max(c, d);
	printf("max2 = %d\n", max2);
	return 0;
}

输出:

max1 = 9
max2 = 17

5、指针

int main() {
	int a = 10; //4个字节
	int* p = &a;//取地址
	printf("a的地址是:%p\n", &a); //p是一个变量-指针变量
	printf("取到地址:%p\n", p);
	*p = 15; //* - 解引用操作符
	printf("a = %d\n", a);
	return 0;
}

输出:

a的地址是:000000CB1211FC94 //非固定,地址由机器分配
取到地址:000000CB1211FC94
a = 15

同理字符串也是如此:

int main() {
	char ch = 'w';
	char* pc = &ch;//取地址
	double b = 3.14;
	double* pb = &b;//取地址
	*pc = 'a';//通过地址修改里面的字符
	printf("ch = %c\n", ch);
	*pb = 5.32;//通过地址修改里面的数值
	printf("pb = %lf\n", b);
	printf("指针变量的大小为:%d\n", sizeof(pb));//x64为8、x86为4
	return 0;
}

输出:

ch = a
pb = 5.320000
指针变量的大小为:8

6、结构体

实例:定义一个Book的结构体,包含书名和售价

struct book{
	char name[20];//c语言程序设计
	short price;//55元
}; //Book结构体的定义

int main() {
	struct book b1 = { "c语言程序设计",55 };
	//1、结构体内部打印
	printf("书名:《%s》\n售价:%d¥\n", b1.name, b1.price);
	struct book* pb = &b1;//结构体的指针变量
	//2、指针变量打印
	//用pb打印书名和价格:1、结构体变量.成员
	printf("%s\n%d\n",(*pb).name,(*pb).price);
	//3、指针变量另一种方式
	//简化代码->:2、结构体指针->成员
	printf("%s售价为%d\n", pb->name, pb->price);
	//4、结构体值的修改
	strcpy(b1.name, "c++");//修改字符串的时候需要使用strcpy函数 - <string.h>
	b1.price = 45;
	printf("修改后书名为:《%s》\n修改后售价为:%d¥\n", b1.name,b1.price);
	return 0;
}

输出:

书名:《c语言程序设计》
售价:55¥
c语言程序设计
55
c语言程序设计售价为55
修改后书名为:《c++》
修改后售价为:45

day3 学习日志:

一、C语言是一门‘结构化’的程序设计语言

1、顺序结构
2、选择结构
分支语句:

  • if
 if(表达式)
 	语句;
if(表达式)
	语句1else
	语句2
if(表达式1)
	语句1else if(表达式2)
	语句2else 
	语句3
  • switch

3、循环结构
循环语句:

  • while

  • for

  • do while

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程饱饱吃得好饱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值