
C语言基础知识
文章平均质量分 64
初级
西西阿西哥
从零开始的信息世界生活
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
结构、联合和枚举
结构(structure)可能具有不同类型的值(member)的集合。联合(nuion)可存储不同类型的值,每次储存一个成员(member),无法储存全部成员枚举(enumeration)一种整数类型,它的值由程序员来命名结构是目前为止最重要的一种类型。结构变量数组有两个重要特性:数组的所有元素具有相同的类型为了选择数组元素需要指明元素的位置结构具有与数组非常不同的特性:结构的每个成员可以拥有不同的类型结构的每个成员都有自己的名字,为了原则结构的成员需要指明成员的名字而不是位置.原创 2022-05-15 21:21:04 · 520 阅读 · 2 评论 -
C语言:指针作为函数的入参
参数处理形式参数与实际参数指针作为实际参数形式参数与实际参数形式参数(parameter)出现在函数定义中,他们以假名字来表示函数调用时提供的值;实际参数(argument)是出现在函数调用中的表达式。在C语言在,实际参数是通过 值传递 的;调用函数时,计算出每个实际参数的值并且把它赋值给相应的形式参数。在函数执行过程中,对形式参数的改变不会影响实际参数的值。从效果上来看,每个形式参数的行为好像是把变量初始化为与之匹配的实际参数的值。形式参数的修改不会影响到相应的实际参数,那么可以把形式参数作为函原创 2021-07-15 20:58:03 · 3649 阅读 · 0 评论 -
C语言:基本类型-类型定义
类型定义以布尔类型举例我们可以用宏定义定义布尔类型#define Bool int宏定义实现的是字符串的替换,在程序编译过程中会首先把所有“Bool”替换成int但是,有一个更好的定义布尔类型的方式叫做类型定义typedef int Bool;采用typedef定义Bool会导致编译器在它所识别的类型名列表中加入Bool。现在,Bool类型可以和其他默认内置的类型名一样用于声明变量、强制类型转换和其他地方了。...原创 2021-07-14 21:42:15 · 709 阅读 · 0 评论 -
C语言:指针的高级应用-链表
链表链表1. 声明节点类型2. 创建节点3. - >运算符4. 在链表的开始处插入节点5. 搜索链表6. 从链表中删除节点7. 链表排序8.程序:维护零件数据库链表链表是一连串的结构(节点)组成的,其中每个节点都包含指向下一个链中节点的指针。1. 声明节点类型2. 创建节点3. - >运算符4. 在链表的开始处插入节点5. 搜索链表6. 从链表中删除节点7. 链表排序8.程序:维护零件数据库...原创 2021-07-14 21:41:29 · 556 阅读 · 0 评论 -
指针的高级应用
动态存储分配指向函数的指针动态存储分配为了动态地分配存储空间,将需要调用3种内存分配函数中的一种,这些函数都是声明在<stdlib.h>中的:malloc函数——分配内存块,但是不对内存块进行初始化。calloc函数——分配内存块,并且对内存块进行清除。realloc函数——调整先前分配的内存块这三种函数中,malloc函数是最常用的一种,因为malloc函数不对内存进行清除,所以更高效。当为申请内存块而调用内存分配函数时,由于函数无法知道计划存储在内存块中的数据是什么类型.原创 2021-07-12 19:57:29 · 255 阅读 · 0 评论 -
命令行参数
类似有UNIX系统中的命令ls可以添加命令行参数 -l 即 ls -l还可以添加文件名 -l a.out 即 ls -l a.outls将会显示文件名为a.out的详细信息不仅操作系统命令,所有程序都有命令行信息。为了能够访问这些命令行参数(程序参数),必须把main函数定义为含有两个参数的函数,这两个参数通常命名为argc和argv:main(int argc,char *argv[]){ ...}argc(参数计数)是命令行参数的数量(包含程序本身)。argv(”参数向量“)是指向原创 2021-02-25 17:20:32 · 792 阅读 · 0 评论 -
通过业务场景理解C语言运算符 ->
在阅读C语言二代支付程序时,有如下代码:#define Mxip_frtc xip->xipFromTradeCode其中的->叫做结构体指针运算符,用来访问结构体内部成员。举个例子:struct Data{ int a,b,c;}struct Data *p;struct Data A = {1,2,3};int x;p = &A;x = p -> a;我们在源程序中找一下*xip指针指向的结构体,可以看到函数入参为结构体指针int B原创 2021-01-11 10:18:20 · 156 阅读 · 0 评论 -
C语言:布尔值、宏定义、类型定义
宏定义因为许多程序需要变量能存储真值或假值,所以C语言缺少适当的布尔类型可能会很麻烦。一直采用模拟布尔型变量的方法来解决麻烦,这种模拟的方法是先声明int型变量,然后将其赋值0或1。int flag;flag = 0;...flag = 1;虽然这种方法可行,但是对于程序的可读性没有多大的贡献,因为没有明确地表示flag的赋值只能是布尔值,并且也没明确指出0和1表示假和真。为了使程序更加便于理解,一个好的方法是类似于TRUE和FALSE这样的名字来定义宏。#define TRUE 1#d原创 2020-12-31 17:14:32 · 3050 阅读 · 0 评论 -
指针疑难点问答
指针总是和地址一样吗?通常是,但不总是。考虑用字而不是字节划分内存的计算机。字可以包含36位、64位,或者更多位。如果假设36位的字,那么内存将有如下的显示:当用字划分内存时,每个字都有一个地址。通常整数占一个字长度,所以指向整数的指针可以就是一个地址。但是,字可以存储多于一个的字符。例如,36位的字可以存储6个6位的字符:或者4个9位的字符:由于这个原因,可能需要用不用于其他指针的格式存储指向字符的指针。指向字符的指针可以由地址(存储字符的字)加上一个小整数(字符在字内的位置即偏移量)组成.原创 2020-12-30 21:15:30 · 190 阅读 · 0 评论 -
指针和数组
当指针指向数组元素时,C语言允许对指针进行算数运算,即加法和减法,这种运算引出了一种对数组进行处理的替换方法,它可以使指针代替数组下标进行操作。用指针处理数组的主要原因之一是效率。指针的算术运算指针用于数组处理用数组名作为指针指针和多维数组指针的算术运算指针指向数组元素:int a[10],*p;p = &a[0];由此我们可以通过p来访问a[0]。*p = 5;上述语句把5存到了a[0]中。通过在p上执行指针算术运算(或地址算数运算)可以访问到数组a的其他元素。C语原创 2020-12-29 17:59:04 · 701 阅读 · 0 评论 -
C语言——指针基础
指针变量取地址运算符和间接寻址运算符指针赋值指针作为实际参数指针作为返回值指针变量机器层上指针表示的内容是什么?x表示第几个byte,y表示物理address,x和y一一对应。一般的对应关系 y = x - 1;其中一个byte存储的内容为00000000-11111111的机器码。可执行程序由代码和数据两部分构成。程序中的每个变量占有一个或多个内存字节,把第一个字节的地址称为是变量的地址。设程序中的一个变量为x,x所占有的内存空间y = x.space(); 内存空间的首地址 .原创 2020-12-29 11:22:51 · 334 阅读 · 0 评论 -
#ifdef与#endif的作用及用法
一般情况下,源程序所有的行都参与编译。但是有时希望对其中一部分内容只有满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时 ,希望当满足条件时对一组语句进行编译,当条件不满足时则编译另一条语句。条件编译命令最常见的形式为:#ifdef 标识符 程序段1#else 程序段2#endif它的作用是:当标识符已经被定义过(一般用#define命令定义),则对程序段1进行编译,否则编译程序段2其中#else部分也可以没有,即:ifdef 程序段1endif在头转载 2020-12-22 09:37:23 · 4031 阅读 · 2 评论