首页 > 其他分享 >一点C语言补充知识

一点C语言补充知识

时间:2022-10-03 23:44:25浏览次数:45  
标签:变量 关键字 补充 知识 C语言 int static 修饰 函数

1 C知识点

1.1 传值传指针传引用

  • 传值不能改变实参的值,传指针传引用能改变实参值
  • 传指针中形参是实参的副本,不能够改变实参的值,但能够通过指针改变对应地址的内容
  • 传引用中形参也建立了局部变量,但传入的是地址作为实参的别名,通过间接寻址改变实参的值

1.2 C语言的结构化、模块化设计

(1)文件

  • 包括头文件和源文件,源文件作为编译单元,头文件中变量和函数的生命为每个编译单元提供共享和链接

(2)关键字和概念

  • 包括static, extern, 作用域(可见性), 生命期, 全局, 局部

(3)变量类型

  • 自动变量:由auto修饰,函数内部不加任何关键字修饰的变量就是动态变量。
  • 寄存器变量:由register修饰,提高存取速度。
  • 局部静态变量:由static关键字修饰,函数内部由static关键字修饰,作用域是函数体内,生命期为整个程序。
  • 全局静态变量:由static关键字修饰,函数外部由static关键字修饰,作用域是当前文件,生命期为整个程序。
  • 外部变量:由extern关键字修饰,函数外部不加任何关键字修饰的变量是外部变量(加extern修饰只是声明,不加修饰成为定义),作用域是整个程序,生命期为整个程序。
  • const变量:值不能够修改的变量,通常用于修饰指针,const int *p表示p指向的数据时只读的,int * const p表示p本身是只读的,通常用在函数的指针形参中,表示函数不会修改指向数据;函数外的非const变量默认为外部变量,const变量默认为非外部变量,如果想被其它文件访问,必须显示指定为extern。

(4)函数类型

  • 外部函数:由extern修饰,不加任何关键字修饰的函数默认为外部函数,作用域是整个程序。
  • 内部函数:由static修饰,作用域是当前文件。

(3)多文件编程

  • 在头文件中声明变量和函数,用static、extern关键字修饰内部、外部变量,用static关键字修饰内部函数(默认为外部函数)。
  • 源文件中定义变量和函数,将要使用变量和函数的声明include进来。

1.3 数组和指针

  • 数组名是一个指向数组首元素的常量指针
int a[10];
int *p = a;
//则访问数组元素a[i]也可以写作:
*(a+i) = 5;
*(p+i) = 5;
p[i] = 5;
  • 函数参数传递数组
int b[10];
//则传递b[10]可以写作:
/////////////////////////////
int Avg(int b[10]);
int avg = Avg(b);
/////////////////////////////
int Avg(int b[], int Length);
int avg = Avg(b, 10);
/////////////////////////////
int Avg(int *b, int Length);
int avg = Avg(b, 10)

1.4 位域

struct bs{
    int a:8;
    int b:2;
    int c:6;
}data;
//说明data为bs变量,共占两个字节。其中位域a占8位,位域b占2位,位域c占6位

标签:变量,关键字,补充,知识,C语言,int,static,修饰,函数
From: https://www.cnblogs.com/z5onk0/p/16751592.html

相关文章

  • 广义表中表头和表尾基本知识
    广义表((a,b),c,d)表头和表尾分别是什么? 公式:(1)表头:当广义表LS非空时,称第一个元素为LS的表头;(2)表尾:称广义表LS中除去表头后其余元素组成的广义表为LS的表尾。区别:表头是元......
  • 数据结构与算法分析——C语言描述(第9章 图论算法)*
    目录9.1若干定义图的表示9.1若干定义一个图(graph)\(G=(V,E)\)由顶点(vertex)的集\(V\)和边(edge)/弧(arc)的集\(E\)组成。每一条边就是一幅点对\((v,w)\),其中\(v,......
  • 数据结构与算法分析——C语言描述(第5章 散列)
    目录5.1一般想法5.2散列函数5.3分离链接法(separatechaining)5.4开放定址法(openaddressing)本章讨论散列表(hashtable)ADT,不过它只支持二叉查找树所允许的一部分......
  • 【C语言_13】多维数组
    1.什么是多维数组?   C语言中的多维数组(multidimensionalarray)其实就是使用数组作为数组的元素。n维数组的元素是n-1维数组。例如,二维数组的每个元素都是一维数......
  • thinkphp 知识付费小程序源码 后台免费一键更新教程资源
    知识付费小程序源码thinkphp后台管理数据,带800条真实教程资源数据,后台免费一键更新教程资源  thinkphp3.2后台,小程序前端已修改很多bug,会员收藏,会员下载记录,会员积......
  • 【博学谷学习记录】超强总结,用心分享 。Dubbo相关知识。
    一.Dubbo的介绍2011年10月27日,阿里巴巴开源了自己的SOA服务化治理方案的核心框架Dubbo,服务治理和SOA的设计理念开始逐渐在国内软件行业中落地,并被广泛应用。在企......
  • 组装电脑基础知识之固态硬盘
    前言本系列文章是为准备自己组装台式机的小伙伴写的关于中央处理器CPU、主板、显卡等部分的参考资料。一、简介固态硬盘(SolidStateDisk或SolidStateDrive,简称SSD),又......
  • 数学知识1.3
    一、简述本文章主要介绍欧拉函数以及快速幂的相关算法。二、欧拉函数定义\(1∼N\)中与\(N\)互质的数的个数被称为欧拉函数,记为\(\phi(N)\)。若在算数基本定理中,\(N......
  • C语言——数据的存储(总结)
    一.数据类型    基本类型    打印类型所占大小(字节)char     字符型    %c  1short    短整型    %d    2int ......
  • C语言与汇编
    C变量C语言是如何把各种类型的变量转换成对应的汇编语言呢?高级语言更容易被工程师理解,而汇编语言这样的低级语言,则更容易被机器解读。这是因为汇编语言里的大部分内容都......