【C语言课堂】 初识篇(03)

简介: 【C语言课堂】 初识篇(03)

前言:

上期向大家介绍了 字符串,转义字符,注释,两种语句,函数,数组,操作符 等知识,这篇博客继续带大家初识C语言,我们开始吧!


目录

❤️11.常见关键字

11.1 typedef

11.2 static

11.2.1修饰局部变量

11.2.2修饰全局变量

11.2.3 修饰函数

🧡12. #define 定义常量和宏

💛13.指针

13.1内存

13.2指针变量的大小

💙14.结构体


11.常见关键字


微信图片_20230415225217.png

常见关键词一览~


先不要紧张,关键字很友好哒,先看看它们的样子吧~

下面把其中两个挑出来讲解:


11.1 typedef

typedef 即 type-define ,类型定义,理解为类型重命名

微信图片_20230415225347.png

可以看到,这里我把 int 重命名为 zhx ,num1 和 num2 是同一种类型


11.2 static

在C语言中:

static 是用来修饰变量和函数

微信图片_20230415225432.png


11.2.1修饰局部变量

尝试看下面两段代码:

//代码1
#include <stdio.h>
void test()
{
  int i = 0;
  i++;
  printf("%d ", i);
}
int main()
{
  int i = 0;
  for (i = 0; i < 10; i++)
  {
    test();
  }
  return 0;
}
//代码2
#include <stdio.h>
void test()
{
  //static修饰局部变量
  static int i = 0;
  i++;
  printf("%d ", i);
}
int main()
{
  int i = 0;
  for (i = 0; i < 10; i++)
  {
    test();
  }
  return 0;
}

代码1结果:

1 1 1 1 1 1 1 1 1 1

代码2结果:

1 2 3 4 5 6 7 8 9 10

原因就是 static 修饰的变量 i 不可被修改,积累了++;

结论:

static修饰局部变量改变了变量的生命周期

静态局部变量出了作用域依然存在,到程序结束,生命周期才结束


11.2.2修饰全局变量

main 函数外直接定义变量,称为全局变量。

看两段代码:

//代码1
include<stdio.h>
//add.c文件中:
int g_val = 2023;
//test.c文件中:
int main()
{
  printf("%d\n", g_val);
  return 0;
}
//代码2
#include<stdio.h>
//add.c文件中:
static int g_val = 2022;
//test.c文件中:
int main()
{
  printf("%d\n", g_val);
  return 0;
}

代码1可以正常编译,代码 2 编译异常,出现连接性错误

原因是代码 2 中 static 修饰的变量只可以在 add.c 这一个文件中使用,这也是 static 的魅力所在。

结论:

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


11.2.3 修饰函数

类似于修饰全局变量,直接看结论:

结论:

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


12. #define 定义常量和宏


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

定义后可以像这样直接使用


13.指针


13.1内存

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。

所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节

为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。

可以把内存看成小房子,房子的门牌号就是指针;

微信图片_20230415230126.png

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

如何取出变量的地址呢?

这里用到了操作符 &

#include <stdio.h>
int main()
{
    int num = 10;
    &num;//取出num的地址
    //注:这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
    printf("%p\n", &num);//打印地址,%p是以地址的形式打印
    return 0;
}

如何储存地址呢?

需要定义指针变量,就是储存指针的变量

int num = 10;
int *p;//p为一个整形指针变量
p = &num;

用指针修改变量:

#include <stdio.h>
int main()
{
    int num = 10;
    int *p = &num;
    *p = 20;//解引用操作,通过指针访问并修改变量
    return 0;
}

以上举例只是整形指针,可以推广到其他指针类型:

char arr = 'y';
char*ap = &arr;
float i = 3.14;
float*ip = &i;

其实就是在类型后面加 *  


13.2指针变量的大小


幸运的是,我们可以直接用 sizeof 来计算指针变量的大小

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

指针变量的大小取决于地址的大小

32位平台下地址是32个bit位(即4个字节)

64位平台下地址是64个bit位(即8个字节)  


14.结构体


什么是结构体?

简单来讲,就是具有多个特征的个体

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型

就比如描述一个学生,需要 名字,年龄,性别,学号 这几个特征:

struct Stu
{
   char name[20];//名字
   int age;      //年龄
   char sex[5];  //性别
   char id[15]; //学号
};

以上就是结构体的简介和创建。


总结:

到这里 初始C语言 就完结啦,相信你已经收获满满,后期就要开始详细的讲解每个知识点啦 ~ 是不是期待呢?

目录
相关文章
|
算法 程序员 C语言
【C语言课堂】 函数递归
【C语言课堂】 函数递归
164 0
|
程序员 编译器 C语言
【C语言课堂】 函数精讲
【C语言课堂】 函数精讲
82 0
【C语言课堂】 函数精讲
|
编译器 C语言
【C语言课堂】 分支和循环语句 详讲,详讲,详讲 !
【C语言课堂】 分支和循环语句 详讲,详讲,详讲 !
68 0
【C语言课堂】 分支和循环语句 详讲,详讲,详讲 !
|
C语言 C++
【C语言课堂】 初识篇(02)
【C语言课堂】 初识篇(02)
81 0
【C语言课堂】 初识篇(02)
|
编译器 C语言
【C语言课堂】 初识篇(01)
【C语言课堂】 初识篇(01)
72 0
【C语言课堂】 初识篇(01)
|
存储 程序员 开发工具
面向对象的程序设计C++课堂复盘总结 C语言复习+C++基础语法
Stay Hungry,Stay Foolish. 任何人都能写出机器能看懂的代码,但只有优秀的程序员才能写出人能看懂的代码。 有两种写程序的方式:一种是把代码写得非常复杂,以至于 “看不出明显的错误”;另一种是把代码写得非常简单,以至于 “明显看不出错误”。 “把正确的代码改快速”,要比 “把快速的代码改正确”,容易得太多。 C++ 庞大、复杂是无法改变的事实,所以我们要把这三条格言铭记在心,对它保持一颗 “敬畏” 的心,在学习语言特性的同时,千万不要滥用特性,谦虚谨慎,戒骄戒躁。 -------CSDN Albert Edison
303 0
|
1月前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
70 10
|
1月前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
53 9
|
1月前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
43 8
|
1月前
|
C语言 开发者
【C语言】数学函数详解
在C语言中,数学函数是由标准库 `math.h` 提供的。使用这些函数时,需要包含 `#include <math.h>` 头文件。以下是一些常用的数学函数的详细讲解,包括函数原型、参数说明、返回值说明以及示例代码和表格汇总。
53 6