初识C语言——C语言基础知识(四)

简介: 初识C语言——C语言基础知识(四)

11.常见关键字

关键字就是被C语言本身使用的,不能作其它用途使用的字。关键字不能用作变量名。

1、关键字auto用于说明自动变量,由于变量声明时默认情况下就是自动变量,所以很少使用。

2、volatile(易变的)表示该变量不经过赋值,其值也可能被改变(例如表示时钟的变量、表示通信端口的变量等)。

下面我会对常用的关键字进行解释讲解 对标红进行重点解释

C语言中的关键字

auto:声明自动变量 一般不使用

double:声明双精度变量或函数

float:声明浮点型变量或函数

int:声明整型变量或函数

short:声明短整型变量或函数

long:声明长整型变量或函数

struct:声明结构体变量或函数

break:跳出当前循环

else:条件语句否定分支(与if连用)

switch:用于开关语句

case:开关语句分支

enum:声明枚举类型

register:声明寄存器变量

typedef:用以给数据类型取别名

char:声明字符型变量或函数

extern:声明外部变量是在其他文件中已经定义过了,可在当前文件使用

return:子程序返回语句(可以带参数,也可不带参数)

union:声明联合数据类型

const:声明只读变量(常变量)

unsigned:声明无符号类型变量或函数

signed:生命有符号类型变量或函数

continue:结束当前循环,开始下一轮循环

for:一种循环语句(可意会不可言传)

void:声明函数无返回值或无参数,声明无类型指针

default:开关语句中的‘其他’分支

goto:无条件跳转语句

sizeof:计算数据类型长度

volatile:说明变量在程序执行中可被隐含地改变

do :循环语句的循环体

while:循环语句的循环条件

static:声明静态变量

register

register用于告诉编译器将变量存储在CPU的寄存器中,以提高程序的执行效率。使用register关键字声明的变量称为寄存器变量。

使用register关键字声明变量时,需要注意以下几点:

1. 不能对寄存器变量使用&运算符,因为寄存器变量并不一定有一个内存地址。

2. 不能对寄存器变量使用sizeof运算符,因为寄存器变量在内存中没有对应的存储空间。

3. 编译器可以选择是否将变量存储在寄存器中,因此不能强制要求把变量存储在寄存器中。

static

static是C/C++中的一个关键字,它可用于修饰变量、函数和类成员。它的作用取决于它所修饰的对象类型。

1. 修饰变量:当static修饰局部变量时,该变量的生命周期被扩展到整个程序运行期间,但作用域仍然是当前的函数体。这意味着该变量只会被初始化一次,而不是每次函数被调用时都会被初始化。当static修饰全局变量时,该变量的作用域被限制在当前文件中,其他文件无法访问

2. 修饰函数:当static修饰函数时,该函数的作用域被限制在当前文件中,其他文件无法访问。这种函数称为静态函数。

 

#include<stdio.h>
void test() {
  int i = 0;
  i++;
  printf("%d", i);
}
void test1() {
  static int i = 0;
  i++;
  printf("%d", i);
}
int main() 
{
  int i = 0;
  for (i = 0; i < 5; i++) {
    test();//打印结果为11111
  }
  printf("\n");
  for (i = 0; i < 5; i++) {
    test1();//打印结果为12345
  }
  return 0;
}

在没有static修饰时 i 的值出函数时就会被销毁,每次进入都会重新创建并赋值。

而使用static修饰之后, i 出函数后的值不会被销毁,生命周期也扩展到了整个程序运行期间。

12.#define定义常量和宏

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

13.指针

内存是计算机中很重要的存储器,计算机中所有程序的运行都是在内存中进行的。

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

为了能更高效的访问到每个单元,于是就给内存单元进行编号,这些编号被称为内存单元的地址。(可形象理解为宿舍楼,地址就像是门牌号内存单元就像是房间)

指针的使用

例如我们存储一个整形数字15,一个整形在内存中占4个字节(一个整形数字占4个内存单元),在取地址时,拿到的是4个字节中第一个字节的地址。

#include<stdio.h>
int main()
{
    int a = 15;
    int* p = &a;//p是指针变量,这里存放的是a的地址,a是整形,那p就是指向一个int类型的指针,int*是指针类型
    *p = 30;//*解引用操作符,*p就是取地址内的数据,*p也就相当于a
    printf("%d", a);//输出结果为30
    return 0;
}

当然由整形为例也可推广到其他类型,指向的是字符型,那指针类型就是:char*。

指针变量的大小

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

运行的结果都是一样的,在32位操作系统是4个字节,在64位操作系统是8个字节

结构体

之前我们了解到数组,使用数组来存储连续的数据,但数组只能存储相同类型数据,而结构体可以存放不同类型的数据。

例如:

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

结构体初始化

struct Stu s={"zhangsan",20,"男","123456000"};//s是结构体变量,结构体是学生信息,s指代结构体中数据,.是结构体变量访问结构体成员
printf("%s %d %s %s",s.name,s.age,s.sex,s.id);
struct Stu *ps=&s;//ps是指向结构体的指针
printf("%s %d %s %s",ps->name,ps->age,ps->sex,ps->id);//->是结构体指针访问结构体成员

以上便是本期全部内容,初识C语言系列完,后续将持续更新C语言深度解析,本系列是为了使初学者系统了解C语言,便于后续C语言的正式学习。感谢观看!

相关文章
|
6月前
|
人工智能 算法 编译器
C语言初阶测评题:测试你的基础知识和编程技能!!
C语言初阶测评题:测试你的基础知识和编程技能!!
103 1
|
6月前
|
存储 机器学习/深度学习 算法
c语言基础知识帮助理解(函数递归详解)
c语言基础知识帮助理解(函数递归详解)
62 0
|
6月前
|
C语言
c语言基础知识整理与帮助理解——二.数据的输出与输入
c语言基础知识整理与帮助理解——二.数据的输出与输入
92 0
|
6月前
|
Java C语言
c语言基础知识整理与帮助理解(第一篇)
c语言基础知识整理与帮助理解(第一篇)
111 0
|
6月前
|
C语言
C语言中指针的基础知识
C语言中指针的基础知识
73 0
|
程序员 编译器 C语言
初识C语言——C语言基础知识(一)
初识C语言——C语言基础知识(一)
73 0
初识C语言——C语言基础知识(一)
|
存储 C语言 索引
初识C语言——C语言基础知识(三)(数组和操作符)
初识C语言——C语言基础知识(三)(数组和操作符)
98 0
|
5月前
|
搜索推荐 程序员 C语言
指针赋值与引用传递:C语言的基础知识与实践技巧
指针赋值与引用传递:C语言的基础知识与实践技巧
|
4月前
|
搜索推荐 程序员 C语言
指针赋值与引用传递:C语言的基础知识与实践技巧
指针赋值与引用传递:C语言的基础知识与实践技巧
|
C语言
C语言结构体基础知识
C语言结构体基础知识
59 0