初识C语言(三)关键字,宏,指针,结构体

目录

十二、常见关键字

12.1关键字typedef

12.2关键字static

12.2.1修饰局部变量

12.2.2修饰局部变量

12.2.3修饰函数

十三#define定义常量和宏

十四、指针

14.1内存

14.2指针变量的大小

十五.结构体

结构体的概念及定义


接初识C语言(二)

十二、常见关键字

关键字又称保留字,是C语言规定的、赋予特定含义和有专门用途的表示符。C语言中共有32个关键字。如表所示:

类别关键字
数据类型关键字(12个)char, double, enum, float, int, long, short, signed, struct, union, un-signed, void 
控制语句关键字(12个)break, continue, case, do, default, else, for, goto, if, return, switch, while
存储类型关键字(4个)auto,extern, register, static
其他关键字(4个)const, sizeof, typedef, volatile

12.1关键字typedef

typedef顾名思义是类型的定义,这里应该理解为类型重命名。

代码举例:

#include<stdio.h>
//typedef 的应用
typedef unsigned int un_sint;
int main()
{
	//num1和num2的类型是一样的,都是无符号整型
	un_sint num1 = 0;
	unsigned num2 = 0;

	return 0;
}

12.2关键字static

在C语言中static是用来修饰变量和函数的

1.修饰局部变量-称为静态局部变量

2.修饰全局变量-称为静态全局变量

3.修饰函数-称为静态函数

12.2.1修饰局部变量

代码举例:

//static修饰局部变量
void test()
{
	int i = 0;
	i++;
	printf("%d ", i);
}
void test1()
{
	static int i = 0;
	i++;
	printf("%d ", i);
}
int main()
{
	//代码1 //打印十个1
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		test();
	}
	printf("\n");
	//代码2 //大印1 2 3 4 5 6 7 8 9 10
	for (i = 0; i < 10; i++)
	{
		test1();
	}
	return 0;
}

由上述代码可知,static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。

12.2.2修饰局部变量

 代码1:

 代码2:

 由上述代码可知,一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能再其他源文件内使用。

12.2.3修饰函数

static修饰函数,使得这个函数只能在本源文件内使用,不能在其他源文件中使用。这与static修饰全局变量的作用一样。同样在编译时会发生连接性错误。

十三#define定义常量和宏

这里使用代码来讲解:

//定义全局变量
static int val = 10;

//#define定义表示符常量
#define MAX 1000
//#define定义宏
#define ADD(x,y) ((x)+(y))
#include<stdio.h>
int main()
{
	int sum = ADD(2, 3);
	printf("sum = %d\n", sum);
	sum = 10 * ADD(2, 3);
	printf("sum = %d\n", sum);
	return 0;
}

代码中的ADD(2,3)会被替换成((2)+(3)),这就是宏的替换。

十四、指针

指针是C语言中的一个重要概念,它能有效的表示和处理复杂的数据结构,特别善于处理动态数据结构,正确而灵活的使用指针可以有效的实现一些重要的功能,如动态内存的分配,从函数获得多个返回值等。指针用法灵活,能使程序更加的简洁、高效;同时,指针也是一个非常容易引起混淆的概念,使用不当会导致一些隐蔽而严重的程序问题。

程序运行时,变量存放在内存中,不同的变量存放在内存不同的位置,这个位置是可以标示的,在C语言中,使用指针来标示变量在内存中的“位置”。

指针与变量的关系类似于门牌号码与房屋的关系。从指针的角度看,指针标示了内存中的一个“位置”,在这个位置上有一个变量;从变量的角度看,指针标示的是变量在内存中的“位置”,从这个角度看,指针的作用类似于数组的下标。也就是说,系统可以通过指针来找到变量在内存中的位置,从而对变量进行操作。

14.1内存

要理解指针,就必须了解内存的使用方式:

1、内存以字节为单位,一个字节就是一个内存单元;每个内存单元都有一个不重复的编号,称为内存地址,内存地址是一个无符号整数。

2、单个变量(包括数组)按照其数据类型被分配一个或多个内存单元,这些内存单元在内存地址上是连续的,变量的值存放在这些内存单元中。

3、分配给单个变量的内存单元中,第一个内存单元的地址,称为变量的地址或首地址。

C语言程序中所定义的每一个变量,都会被分配若干个连续的内存单元,变量的值就存放在这些内存单元中;变量被分配的内存单元数量由变量的类型决定;除了共用体之外(共用体后续文章会讲到),不同的变量使用不同的内存单元。

如:定义一个整型变量和一个double类型的变量,两个变量在内存中的分配方式如下图表示:

int a = 10; double b = 1.0;

 变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。

取出变量地址如下:

 地址是如何存储的呢?那就是要定义指针变量

#include<stdio.h>
int main()
{
    int a = 0;
    //定义了整型指针,把a的首地址赋给了指针变量p
    int* p = &a;
    return 0;
}

 指针的应用:

int main()
{
	int a = 10;
	int* p = &a;
	printf("%d\n", *p); //10
	*p = 20;            
	printf("%d\n", *p); //20
	return 0;
}

指针变量也可以是其他数据类型,那么不同类型的指针变量它们的大小是怎么样的呢?

14.2指针变量的大小

代码举例:

int main()
{
	printf("%d\n", sizeof(char*)); //8
	printf("%d\n", sizeof(int*));  //8
	printf("%d\n", sizeof(short*));//8
	printf("%d\n", sizeof(float*));//8
	return 0;
}

可以看到,不管是什么类型的指针变量,它们的大小都是8个字节,其实,指针大小在32位平台是4个字节,64位平台是8个字节。

十五.结构体

结构体的概念及定义

结构体是将彼此相关的、类型不同的数据组合在一起的构造数据类型,它是由若干成员(也称为结构分量)组成的,每一个成员的数据类型可以是基本数据类型,也可以是构造类型。在使用某个结构体之前必须先声明它,即根据需要构造它。声明结构类型的一般形式为:

struct 结构名

{

        类型名 成员名1;

        类型名 成员名2;

        ……

         类型名 成员名3;

}

代码举例:

struct Stu
{
    char name[20];//名字
    int age;      //年龄
    char sex[5];  //性别
    char id[15]; //学号
};
//结构体初始化
//打印结构体信息
int main()
{
    struct Stu s = {"张三", 20, "男", "20180101"};
    //.为结构成员访问操作符
    printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
    //->操作符
    struct Stu *ps = &s;
    printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps-
    >id);
    return 0;
}

初识C语言模块结束,加油! 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值