
C语言学习笔记
文章平均质量分 90
C语言学习笔记
stdcoutzrh
MachineLearning/ComputerVision
展开
-
操作系统与main函数、argc、argv
操作系统与main函数、argc、argv1.操作系统究竟是什么2.操作系统的调用通道:系统调用2.1 C库函数和系统调用API的关系2.2不同平台下库函数的差异3.操作系统的重大意义:软件体系分工4.main函数返回值返回给谁4.1 函数为什么需要返回值4.2 main函数被谁调用4.3 Linux下一个新程序执行的本质4.4 实践获取main的返回值5.argc、argv与main函数的传参5.1 谁给main函数传参5.2 为什么需要给main函数传参5.3 代码层面给main传参的实现5.4 本质上原创 2021-03-11 09:03:41 · 1302 阅读 · 1 评论 -
C语言变量作用域、链接属性与static关键字
C语言变量作用域与static关键字##局部变量的代码块作用域(1)代码块基本可以理解为一对大括号{}括起来的部分。(2)代码块不等于函数,因为if while for都有{}。所以代码块<=函数(3)局部变量的作用域是代码块作用域,也就是说一个局部变量可以被访问和使用的范围仅限于定义这个局部变量的代码块中定义式之后的部分。4.7.5.2、函数名和全局变量的文件作用域(1)文件作用域的意思就是全局的访问权限,也就是说整个.c文件中都可以访问这些东西。这就是平时所说的局部和全局,全局就是文原创 2021-03-10 12:19:50 · 802 阅读 · 0 评论 -
C语言变量存储类及相关关键字
C语言内存管理二:变量存储类)1.程序中内存从哪里来11.程序中内存从哪里来14.5.1.1、程序执行需要内存支持()对程序来说,内存就是程序的立足之地(程序是被放在内存中运行的);程序运行时需要内存来存储一些临时变量。4.5.1.2、内存管理最终是由操作系统完成的(1)内存本身在物理上是一个硬件器件,由硬件系统提供。(2)内存是由操作系统统一管理。为了内存管理方便又合理,操作系统提供了多种机制来让我们应用程序使用内存。这些机制彼此不同,各自有各自的特点,我们程序根据自己的实际情况来选择某种方式原创 2021-03-10 11:10:34 · 868 阅读 · 1 评论 -
C语言内存管理深入
C语言变量的存储类型1.程序执行需要内存支持2.三种内存来源2.1 栈内存的特点2.2 堆内存详解变量的存储类型就是指存储变量值的内存类型,变量的存储类型决定变量何时创建,何时销毁以及它的值保持多久。1.程序执行需要内存支持对程序来说,内存就是程序的立足之地,程序是被放在内存中运行的,程序运行时需要内存来存储一些临时变量。内存管理最终是由操作系统完成的,内存本身在物理上是一个硬件器件,由硬件系统提供。内存是由操作系统统一管理。为了内存管理方便又合理,操作系统提供了多种机制来让我们应用程序使用内存。这原创 2021-03-09 07:26:58 · 1865 阅读 · 2 评论 -
C语言内存管理基础
C语言内存管理基础1.什么是内存2.程序运行为什么需要内存2.计算机中如何管理内存4.一些描述内存大小的单位5.内存管理之栈stack6.内存管理之堆heap7.malloc()和free()函数的使用8.复杂数据结构1.什么是内存从硬件角度看:内存实际上是电脑的一个配件,一般叫内存条。根据不同的硬件实现原理还可以把内存分成SRAM和DRAM。从逻辑角度看:内存是这样一种东西,它可以随机访问,只要给一个地址,就可以访问这个内存地址;并且可以读写,当然了逻辑上也可以限制其为只读或者只写。内存在编程中天然原创 2021-03-08 10:27:02 · 345 阅读 · 0 评论 -
C语言函数的深入探究
C语言函数的深入探究1.为什么会有函数2.函数的实质:数据处理器3.函数的使用规则3.1 函数的基本使用3.2 函数原型和作用3.3 函数传参4.递归函数4.1 什么是递归函数4.2 函数的递归调用原理4.3 使用递归函数的原则:收敛性、栈溢出1.为什么会有函数一个程序可以分成多个源文件,一个源文件内部通常包含多个函数,一个函数分成多个语句,这就是整个程序的组织形式。这样组织的好处在于:分化问题、便于编写程序和便于分工。函数的出现是人:程序员和架构师的需要,而不是机器:编译器、CPU的需要。函数的目的原创 2021-03-05 19:50:55 · 243 阅读 · 0 评论 -
C语言预处理与宏定义以及内联函数
C语言预处理与宏定义1.C语言预处理理论1.1 由源码到可执行程序的过程1.2 预处理的意义1.3 编程中常见的预处理2.C语言预处理代码实践2.1 #include头文件包含2.2 注释2.3 条件编译3.宏定义的使用3.1 宏定义的规则和使用解析3.2 宏定义示例3.3 带参宏和带参函数的区别4.内联函数和inline关键字1.C语言预处理理论1.1 由源码到可执行程序的过程当写了一个test.c文件,对它进行编译似乎是直接生成了可执行文件a.out:peco@ubuntuz:/mnt/hgfs原创 2021-03-03 12:58:22 · 531 阅读 · 0 评论 -
C语言指针的理解六:函数指针与typedef
C语言中指针的理解5:函数指针与C语言实现面向对象1.函数指针与typedef1.1 函数指针的实质(还是指针变量)1.2 函数指针的语法和分析方法1.3 typedef关键字的用法1.4 总结2.函数指针的应用2.1 用函数指针调用执行函数2.2 结构体内嵌函数指针实现分层3.再论typedef1.函数指针与typedef1.1 函数指针的实质(还是指针变量)函数指针的实质还是指针,还是指针变量。在64位系统中,所有的指针都是8字节,32位系统中都是4字节。函数指针、数组指针、普通指针之间并没有本质原创 2021-03-07 19:59:49 · 3114 阅读 · 0 评论 -
C语言指针的理解五:二重指针与二维数组
C语言中指针的理解5:二重指针与二维数组1.二重指针1.1 二重指针与普通一重指针的区别1.2 二重指针的用法1.3 一些概念的实质2.二维数组2.1 二维数组的内存映像2.2 二维数组下标理解和访问2.3 二维数组的应用和更多维数组2.4二维数组的运算和指针1.二重指针1.1 二重指针与普通一重指针的区别本质上来说,二重指针和一重指针的本质都是指针变量,占用相同的内存空间,而指针变量的本质就是变量。二重指针本质上也是指针变量,和普通指针的差别就是它指向的变量类型必须是个一重指针。二重指针其实也是一原创 2021-03-03 12:55:43 · 2074 阅读 · 1 评论 -
C语言指针的理解四:指针与强制数据类型转换
C语言中指针的理解4:指针与强制数据类型转换1.变量的数据类型的含义2.指针的数据类型的含义1.变量的数据类型的含义首先来看这样一道2016年的408考试真题:有代码:short si=-32767; unsigned short usi=si;,则usi的值为?解析:short占4字节,16bit,si是有符号数,对应的二进制补码为1000 0000 0000 0001,而usi是无符号数,因此对于之前的补码,解析方式为直接将其当作原码解析即可,1000 0000 0000 0001为二进制原原创 2021-03-01 17:00:55 · 2092 阅读 · 0 评论 -
C语言指针的理解三:指针与函数传参
C语言中指针的理解3:指针与函数传参1.函数传参时不同类型参数的表现1.1 普通变量作为函数形参1.2 数组作为函数形参1.3 指针作为函数形参1.4 结构体变量作为函数形参2.传值调用与传址调用3.输入型参数与输出型参数3.1 函数为什么需要形参与返回值3.2 函数传参中使用const指针3.3 函数如何向外部返回多个值3.4 总结1.函数传参时不同类型参数的表现1.1 普通变量作为函数形参函数传参时,普通变量作为参数,形参和实参名字可以相同也可以不同。在子函数内部,形参的值等于实参,原因是函数调用原创 2021-03-01 16:08:05 · 2796 阅读 · 0 评论 -
C语言指针的理解二:指针与数组、数组指针与指针数组
C语言中指针的理解2:const与指针的合用1.const修饰指针的4种形式2.const修饰的变量真的不能改吗?3.const究竟应该怎么用1.const修饰指针的4种形式const关键字在C语言中用来修饰变量,表示这个变量是常量。指针变量也是变量,所以const关键字自然也可以用来修饰指针。const修饰指针常见的有4种形式,区分清楚这4种即可全部理解const和指针。以int类型指针为例:第一种:const int *p;,表示p本身不是const,*p是const。第二种:int con原创 2021-03-01 14:37:36 · 1154 阅读 · 0 评论 -
C语言指针的理解一:指针是什么
C语言中指针的理解1:指针是什么1.C语言中的指针是什么1.1 指针变量和普通变量的区别1.2 为什么需要指针1.3 指针使用的标准方式2.指针带来的一些符号的理解2.1 星号*2.2 取地址符&2.3 指针定义并初始化与指针定义然后赋值的语法区别2.4 左值与右值3.野指针问题3.1 什么是野指针3.2 如何避免野指针3.3 NULL是什么1.C语言中的指针是什么1.1 指针变量和普通变量的区别首先必须非常明确:指针完整的名字应该叫指针变量,简称为指针。指针的实质就是个变量,从内存和数据的角原创 2021-03-01 10:59:52 · 1523 阅读 · 1 评论 -
大端模式与小端模式
1.大小端模式的概念大端模式(big endian)和小端模式(little endian)最早是小说格列佛游记中出现的词和计算机本来没关系的。后来计算机通信发展起来后,遇到一个问题就是:在串口等串行通信中,一次只能发送1个字节。这时候如果要发送一个int类型的数就会遇到一个问题,int类型的4个字节是按照:byte0、byte1、 byte2、 byte3这样的顺序发送,还是按照byte3 、byte2 、byte1、 byte0这样的顺序发送。规则就是发送方和接收方必须按照同样的字节顺序来通信,否则原创 2021-01-20 19:09:14 · 1381 阅读 · 3 评论 -
C语言中的自定义类型:union共用体
C++学习笔记:union共用体1.共用体的使用2.关于数据类型的理解3.共用体的主要用途4.C++中的共用体1.共用体的使用共用体union和结构体struct在类型定义、变量定义、使用方法上很相似。举个栗子:#include<stdio.h>struct my_struct{ //定义一个结构体 int a;char b;};union my_union{ //定义一个共同体 int a;char b;};int main(int argc,char**argv){原创 2021-01-20 19:08:37 · 442 阅读 · 0 评论 -
C语言中的自定义类型:enum枚举
C++学习笔记:enum枚举1.C语言中的枚举1.1 枚举的作用1.2 枚举的定义与使用1.3 C语言为何需要枚举1.4 宏定义和枚举的区别2.C++中的枚举3.关于枚举的3个小细节1.C语言中的枚举1.1 枚举的作用枚举在C语言中其实是一些符号常量集。枚举定义了一些符号,这些符号的本质就是int类型的常量,每个符号和一个常量绑定。这个符号就表示一个自定义好的一个识别码,编译器对枚举的认知就是符号常量所绑定的那个int类型的数字。例如可以使用数字1、2、3、4、5、6、7来代表周一到周末,但是纯数字原创 2021-01-18 20:49:46 · 800 阅读 · 0 评论 -
结构体内存对齐
C++学习笔记:结构体内存对齐1.什么是结构体内存对齐2.结构体为何要对齐访问3.结构体对齐的规则和运算4.#pragma pack(n)对齐指令5.__attribute__()对齐指令1.什么是结构体内存对齐来看这样一种现象:#include<stdio.h>#include<stdlib.h>typedef struct student{ //定义结构体类型 char a; int age;}stu;//stu是新的类型名 而不是一个变量int main(原创 2021-01-19 11:36:29 · 1489 阅读 · 0 评论 -
C语言中的自定义类型:struct结构体
C++学习笔记:struct结构体1.结构体概述2.结构体的定义和使用3.从数组到结构体的进步之处4.结构体变量中的元素访问1.结构体概述C++语言中的2种类型:原生类型(如int、char等)和自定义类型(如class,struct,enum等)。结构体类型是一种自定义类型。2.结构体的定义和使用结构体使用时可以先定义好结构体类型,然后再用定义好的类型来定义变量。访问结构体成员则是变量名.成员名,举个栗子:#include<stdio.h>struct student{ //定义原创 2021-01-19 08:59:48 · 2606 阅读 · 1 评论