C语言学习(7)

目录

关键字

常见关键字

#define定义常量和宏

初识结构体


关键字

1.C语言提供的,不能自己创建

2.关键字不能做变量名

常见关键字

auto  break   case  char  const   continue  default  do   double else  enum   extern float  for   goto  if   int   long  register    return   short  signed sizeof   static struct  switch  typedef union  unsigned   void  volatile  while

auto:自动的——每个局部变量都是auto修饰的;

自动变量——自动创建,自动销毁

extern:用来声明外部符号

register:寄存器关键字

例:register int num=100 //建议num值存放在寄存器内,最终由编译器决定

//大量、频繁被使用的数据,可以放在寄存器内,提升效率

//寄存器变量不能取地址

计算机中数据可以储存在哪里?

寄存器、高速缓存、内存、硬盘、网盘——从左到右→造价越低,速度越慢,空间越大

其他:

signed——有符号的   10   -20

unsigned——无符号的

static——静态的

union——联合体(共用体)

void——无/空 

define\include——不是关键字,是预处理指令

typedef 类型重定义(重命名) :

将unsigned int 重命名为uint_3, 所以uint_3也是一个类型名

typedef unsigned int uint_3;

 关键字static:

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

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

static修饰局部变量改变了变量的生命周期 让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。(本质是改变了变量的存储类型)

栈区——局部变量、函数的参数

堆区——动态内存分配的

静态区——全局变量、static修饰的静态变量 

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

一个全局变量被static修饰,使得这个全局变量只能在自己所在的源文件内使用,不能在其他源文件内使用。

本质:全局变量在其他源文件内部能够被使用,是因为具有外部链接属性,static修饰后,变成了内部链接属性

3. 修饰函数-静态函数

一个函数被static修饰,使得这个函数只能在自己所在的源文件内使用,不能在其他源文件内使用。

本质:static修饰将函数的外部链接属性变成了内部链接属性

#define定义常量和宏

1.define定义符号

#define MAX 1000 

 2.define定义宏

注意以下区别:

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

 结果:sum=5;sum=50

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

结果:sum=5;sum=23 

初识结构体

结构体用来描述复杂类型

#include <stdio.h>

//结构体可以让C语言创建新的类型

//创建一个学生
struct stu
{
	//成员变量
	char name[20];
	int age;
	double score;
};

//创建一个的书的类型
struct Book
{
	char name[20];
	float price;
	char id[30];
		
};
int main()
{
	struct stu s = { "王鹏",20,96.0 };//结构体的创建和初始化
	printf("1:%s %d %lf\n", s.name, s.age, s.score);//结构体变量.成员变量
	
	struct stu* ps = &s;
	printf("2:%s %d %lf\n", (*ps).name, (*ps).age, (*ps).score);
	
	printf("3:%s %d %lf\n", ps->name, ps->age, ps->score);

	return 0;
}

->基本用法:(结构体指针)->(成员变量名)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值