C语言入门学习(三)


本系列博文仅为博主个人学习笔记,通过博客理清学习思路用于复习。如有记述不周到的地方请谅解;如能指出,更加感谢。 以上三篇笔记仅仅是对c语言部分的概括总结,,后续将会深入学习c语言知识的学习,谢谢大家观看。

十一、常见关键字

auto continue break case char short in  long longlong float double 
const do if else enum extern for goto register return sighed sizeof 
static struct switch typedef union unsighed void while

关键字typedef 是类型重命名。

	typedef int My_int ;
	
	int main (){
	My_int num = 0 ;
	prnitf("%d ", num);

	return 0 ;
}

关键字static 是用来修饰变量和函数的

  1. 修饰局部变量 - 静态局部变量
  2. 修饰全局变量 - 静态全局变量
  3. 修饰函数 - 静态函数
	//代码1
	#include <stdio.h>
	void test(){
		int i = 0 ;  // 没有static关键字修饰
		i++;
		printf("%d ",i);
	}
	int main(){
		 test();
		 return 0 ;
	}
}

在这里插入图片描述

	//代码1
	#include <stdio.h>
	void test(){
		static int i = 0 ;  // 没有static关键字修饰
		i++;
		printf("%d ",i);
	}
	int main(){
		 test();
		 return 0 ;
	}
}

在这里插入图片描述
以上代码仅仅只是有无static对局部变量i的修饰,结果就大不一样。
结论: static 关键字对局部变量进行修饰从表面上来看修改啦他的生命周期,但实质上static改变啦局部变量的存储类型,从原本的栈区存储到啦静态区。

	//代码1
	//add.c
	int g_val = 2021;  // 在该源文件中无static修饰
	//test.c
	#include <stdio.h>
	int main(){
		 prnitf("%d\n",g_val);
		 return 0 ;
	}
}
	//代码2
	//add.c
	static int g_val = 2021;  // 在该源文件中有static修饰
	//test.c
	#include <stdio.h>
	int main(){
		 prnitf("%d\n",g_val);
		 return 0 ;
	}
}

结论 : 代码1执行正常, 代码2在编译时出现编译错误。从中可以得到被static修饰的全局变量不能被其他的源文件使用,只能在本源文件进行使用。其原因是全局变量可以被其他源文件使用,是由于它具有外部链接属性,但被static关键字修改后,将其链接属性转变为内部链接属性,所以其他源文件就不能链接到这个源文件上来啦。
同样的static关键字修饰函数,也是同样的原因和结果,同学们可以亲手试一试。

define 关键字 用来定义宏和变量

	//define 定义标识符常量
	#define MAX 1000
	//define 定义宏
	#defind ADD(x,y) ((x)+(y))
	// 这里特别注明这里的x 和 y 可能是一个表达式,故套上括号防止出现错误,当然整体也是个表达式,故也要加上括号。
	int main(){
	int sum = ADD(2 , 3);
	printf("%d" , sum );
	sum = 10 * ADD(2, 4);
	printf("%d",sum);
	}
	
}

十二、指针

为什么要有指针呢?指针是用来做什么的呢?如何使用指针呢?

每个变量都需要一个空间来去存储这个变量的值,比如char 类型的变量需要1个字节的空间来存储,int 类型的变量需要4个字节的变量来存储,每一个字节就好比我们每个人的家,都是有对应的地址的“某某省某某市。。。某某号”,我们都是根据这些地址来找到我们相对应的家,同样的如果我们想要找到变量的值就存储在其空间,我们如何找到这个空间呢?我们就需要得到它的地址,我们就需要将变量的地址存储起来,c语言中就专门定义啦一个指针变量来存储变量的地址。每种类型都有有其对应的指针变量。

指针变量的大小

	#include <stadio.h>
	int main(){
		printf("%d\n",sizeof(char*));
		printf("%d\n",sizeof(short*));
		printf("%d\n",sizeof(int*));
		printf("%d\n",sizeof(long*));
		printf("%d\n",sizeof(double*));
	}

在这里插入图片描述
为什么代码的结果都是8呢 ???
结论: 指针大小主要取决于地址,因为指针变量存储的就是地址,地址需要多大,指针变量就有多大。tips:64位的平台上都是8个字节,32位的平台上都是4个字节。

十三 . 结构体

结构体是c语言中重要的点, 它使c语言有能力描述复杂类型。
如描述一个学生,姓名+年龄+性别+学号等等信息。只能用数据结构来描述。

	struct str{
	char name[20];
	int age ;
	char sex[5];
	char id[15];
}

结构体的初始化 :

	struct stu s = {"张三",20,"男","20200411"};
}

总结:
在这里插入图片描述

总结

以上就是对c语言的大体轮廓的概述,今后将会深入学习每一章的主题内容,感谢大家的阅读。

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值