C Primer Plus学习笔记——C语言特性备忘

C Primer Plus学习笔记(一) C Primer Plus第一章笔记: 主要了解C语言的起源、优缺点和常用的C语言标准,简单描述了计算机的工作原理和C语言的编程机制,概括了常用的C语言编译器和在不同操作系统中的C编程,探讨C语言编程的七个步骤 为学习C语言打下坚实的基础 阅读详情

说明

本文档性质为个人学习笔记。

在阅读《C Primer Plus(第六版)中文版》时,记录下的需要备忘的知识点,主要关注在C语言的特点和使用中细节上。

第17章 高级数据表示 未做记录,因为暂时用不到那里。记录的要点主要是提醒备查所以不会过于详细。

第三章 数据:数据类型关键字

P64 用%d显示float类型的值,其值不会被转换成int类型

P65 通常,退格不会擦除退回所经过的字符,但有些实现是擦除的

P65 关于缓冲区刷新输出

C标准明确规定了何时把缓冲区中的内容发送到屏幕:当缓冲区满、遇到换行字符或需要输入的时候(从缓冲区把数据发送到屏幕或文件被称为刷新缓冲区)。

第四章 printf()和scanf()

P75 sizeof运算符的圆括号使用

运算对象是类型时,圆括号必不可少,但是对于特定量,可有可无。尽管如此,还是建议所有情况下都使用圆括号。

第五章 表达式和语句

P122 副作用、序列点和完整表达式的概念

副作用(side effect)是对数据对象或文件的修改。

a = 100;

上述表达式的主要作用是对右侧项进行求值,副作用是将a变量的值设为100。

如果将常量换成函数,可能比较好理解一些:

int retnum(void)
{
    return 100;
}

b = retnum();

此时函数retnum完成的任务为表达式的主要目的,将变量b设置为100是其副作用。

P128 在ANSI C之前,C使用的是函数声明,而不是函数原型

函数声明只指明了函数名和返回类型,没有指明参数类型。为了向下兼容,C现在仍然允许这样的形式:

void pound();/*ANSI C之前的函数声明 */

第六章 循环

P156 逗号运算符

逗号运算符并不局限在for循环中使用,它有两个其他性质:

首先,它保证了被它分隔的表达式从左往右求值(换言之,逗号是一个序列点,所以逗号左侧项的所有副作用都在程序执行逗号右侧项之前发生)。

其次,整个逗号表达式的值是右侧项的值。

第七章 C控制语句:分支和跳转

P192 求值顺序

apples = (5 + 3) * (9 + 6);

C把先计算哪部分的决定权留给编译器的设计者,以便针对特定系统优化设计,但是对于逻辑运算符是个例外,C保证逻辑表达式的求值顺序是从左往右。

&&和||运算符都是序列点,所以程序在从一个运算对象执行到下一个运算对象之前,所有的副作用都会生效。

而且C一旦发现某个元素让整个表达式无效,便立即停止求值。

P207 带多重选择的switch语句

形式:

switch (expression)
{
    case label1 : statement1//使用break调出switch
    case label2 : statement2
    default : statement3
}

一般注解:

程序根据expression的值跳转至相应的case标签处,然后执行剩下的所有语句,除非执行到break语句进行重定向。

expression和case标签都必须是整数值(包括char类型),标签必须是常量或完全由常量组成的表达式。

如果没有case标签与expression的值匹配,控制则转至标有default的语句(如果有的话),否则,将将转至执行紧跟在switch语句后面的语句。

第九章 函数

P248 定义带形式参数的函数

ANSI C要求在每个变量前都声明其类型。

void function(int x, y, z);        /* 无效的函数头 */
void function(int x, int y, int z);/* 有效的函数头 */

P255:这里的变量名是假名,不必与函数定义的形式参数名一致。

ANSI C也接受ANSI C之前的形式,但将其视为废弃不用的形式:

void show_n_char(char, num)
char ch;
int num;

这里,圆括号中只有参数名列表,而参数的类型在后面声明。

P252 没有返回值的return

return;

这条语句会导致终止函数,并把控制权交给主调函数,因为return后面没有任何表达式,所以没有返回值,只有在void函数中才会用到这种形式。

P253 函数的前置声明可以放在主调函数外面,也可以放在主调函数里面

函数原型都声明在使用函数之前。

P255 无参数或未指定参数的函数原型

假设有下面的函数原型:

void print_name();

一个支持ANSI C的编译器会假定用户没有用函数原型来声明函数,它将不会检查参数。

为了表明函数确实没有参数,应该在圆括号中使用void关键字:

void print_name(void);

另外,ANSI C允许使用部分原型。

P257 每级递归的递归变量都属于本级递归私有

P262 main()也可以被自己或其它函数递归调用,尽管很少这样做

P271 *和指针名之间的空格可有可无

通常,程序员在声明时使用空格,在解引用变量时省略空格。

第十章 数组和指针

P291 声明数组形参

因为数组名是该数组元素的首地址,作为实际参数的数组名要求形式参数是一个与之匹配的指针。只有在这种情况下,C才会把int ar[]和int * ar解释成一样。也就是说,ar是指向int的指针,由于函数原型可以省略参数名,所以下面4种原型都是等价的:

int sum(int *ar, int n);
int sum(int *, int);
int sum(int ar[], int n);
int sum(int [], int);

但是,在函数定义中不能省略参数名。

P299 对形式参数使用const

为了保护数组中的数据,ANSI C提供了一种预防手段。如果函数的意图不是修改数组中的数据内容,那么在函数原型和函数定义中声明形式参数时应使用关键字const。

第十一章 字符串和字符串函数

P326 静态字符串在运行时的修改是未定义的

char * word = "frame";
word[1] = "l";

编译器可能允许这样做,但是对当前C标准来说,这样的行为是未定义的。例如,这样的语句可能导致内存访问错误。原因是,编译器可以使用内存中的一个副本来表示所有完全相同的字符串字面量。

P332 puts()和fputs()的输出

再次提醒读者注意,puts()函数会在待输出字符串末尾添加一个换行符,而fputs()不会这样做。

P338 puts()函数的停止位置

puts()函数在遇到空字符时就停止输出,所以必须确保有空字符。

P342 字符串常量的串联特性

P353 strcpy()的其他属性

strcpy()还有两个有用的属性:

第一,strcpy()的返回类型是char *,该函数返回的是第一个参数的值,即第一个字符的地址。

第二,第1个参数不必指向数组的开始。这个属性可用于拷贝数组的一部分。

P358 请注意,那些使用const关键字的函数原型表明,函数不会更改字符串

P358 size_t类型

size_t类型是sizeof运算符返回的类型。

C规定sizeof运算符返回一个整整数类型,但并未指明是哪种整数类型,所以size_t在一个系统中可以是unsigned int,而在另一个系统中可以是unsigned long。

string.h头文件针对特定系统定义了size_t,或者参考有其他有size_t定义的头文件。

P364 main()函数的参数

P366 具有错误检测功能的strtol()函数

strtol()函数最多可以转换三十六进制,‘a’~'z’字符都可以用作数字。

P368 fgets()函数获取一行输入,用于代替已被废弃使用的gets()

第十二章 存储类别、链接和内存管理

P376 C变量有三种链接属性

外部链接、内部链接或无链接。

一些程序员把“内部链接的文件作用域”简称为“文件作用域”,把“外部链接的文件作用域”简称为“全局作用域”或“程序作用域”。

P376 C对象的存储期

C对象有4种存储期:静态存储期、线程存储期、自动存储期和动态分配存储期。

如果对象有静态存储期,那么它在程序执行期间一直存在。文件作用域变量具有静态存储期,无论是内部链接还是外部链接。

线程存储期用于并发程序设计,程序执行可以被分为多个线程。具有线程存储期的对象,从被声明到线程结束一直存在。以关键字_Thread_local声明一个对象时,每个线程都获得该变量的私有备份。

块作用域的变量通常都具有自动存储期。

变长数组稍有不同,变长数组的存储期从声明处到块的末尾,而不是从块的开始处到块的末尾。

P377 auto说明符

auto是存储类别说明符(storage-class specifier)。auto关键字在C++中的用法完全不同,如果编写C/C++兼容的程序,最好不要使用auto作为存储类别说明符。

P380 使用register存储类别说明符以便请求将变量存储在CPU的寄存器中

P382 静态变量和外部变量在程序被载入内存时已经执行完毕

P382 不能在函数的形参中使用static

P384 外部变量的初始化

与自动变量不同的是,如果未初始化外部变量,它们会被自动初始化为0。这一原则也适用于外部定义的数组元素。

与自动变量的情况不同,只能使用常量表达式初始化文件作用域变量。

P385 定义和声明

int tern = 1;
main()
{
    extern int tern;
    ...
}

上述程序中,第一次声明被称为定义式声明(defining declaration),第二次声明被称为引用式声明(referencing declaration)。关键字extern表明该声明不是定义,因为它指示编译器去别处查询其定义。

extern int tern = 1;
main()
{
    ...
}

如果是这样的写法,这样的声明不会引起分配存储空间。因此不要用extern创建外部定义,只用它来引用现有的外部定义。

P387 C语言中的存储类别说明符

C语言具有6个存储类别说明符:auto、register、static、extern、_Thread_local、typedef。typedef关键字与任何内存存储无关,把它归于此类有一些语法上的原因。

在绝大多数情况下,不能在声明中使用多个存储类别说明符,所以这意味着不能使用多个存储类别说明符作为typedef的一部分。唯一例外的是_Thread_local,它可以和static或extern一起使用。

P389 除非使用static关键字,否则一般函数声明都默认为extern

P400 calloc()函数的特性

calloc()函数把块中的所有位设置为0。(注意,在某些硬件系统中,不是把所有位设置为0来表示浮点值0。)

P405 const和volatile的同时使用

可以同时使用const和volatile限定一个值。只能在声明中同时使用这两个限定符,它们的顺序不重要,如下图所示:

volatile const int loc;
const volatile int * ploc;

第十三章 文件输入/输出

P416 main()函数中的return和exit()

根据ANSI C的规定,在最初调用的main()中使用return和exit()的效果相同。但如果main()在一个递归程序中,exit()仍然糊终止程序,即使在除main()以外其它函数中调用exit()也能结束整个程序。

P421 程序打开文件数量限制

程序都是单独打开或关闭每个文件。同时打开的文件数量是有限的,这个限制取决于系统和实现,范围一般是10~20。

P435 数据保存方式的选择

如果要在不损失精度的前提下保存或恢复数值数据,请使用二进制模式以及fread()和fwrite()函数。

如果打算保存文本信息并创建能在普通文本编辑器查看的文本,请使用文本模式和函数(如gets()和fprintf())。

第十四章 结构和其他数据

P454 结构其他特性

现在的C允许把一个结构赋值给另一个结构,但是数组不能这样做。

现在的C(包括ANSI C),函数不仅能把结构本身作为参数传递,还能把结构作为返回值返回。

P467 记录和字段

存储在一个结构中的整套信息被称为记录(record),单独的项被称为字段(field)。

P474 枚举类型

可以用枚举类型(enumerated type)声明符号名称来表示整形常量。实际上enum常量是int类型,因此只要能使用int类型的地方就可以使用枚举类型。枚举类型的目的是提高程序的可读性。

C枚举类型的一些特性并不适用于C++。例如,C允许枚举变量使用++运算符,但是C++标准不允许。

默认情况下,枚举列表中的常量都被赋予0、1、2等。

在枚举声明中,可以为枚举常量指定整数值。如果只给一个枚举常量赋值,没有对后面的枚举常量赋值,那么后面的常量会被赋予后续的值。

枚举类型只能在内部使用。

P477 共享名称空间

C语言使用名称空间()标识程序中的各部分。名称空间是分类别的。在特定作用域中的结构标记、联合标记和枚举标记都共享相同的名称空间,该名称空间和普通变量使用的空间不同。

所以下面的代码不会产生冲突:

struct rect
{
    double x;
    double y;
};

int rect;

第十五章 位操作

P499 切换位

切换位指的是打开已关闭的位或关闭已打开的位。可以使用按位异或运算符(^)切换位。

假设b是一个位(1或0),如果b为1,则1b为0;如果b为0,则1b为1。另外无论b为1还是0,0^b均为b。

P505 位字段

P516 C有两种访问位的方法:按位运算符和在结构中创建位字段

第十六章 C预处理器和C库

P522 编译器将用一个空格字符替换每一条注释

P523 宏定义还可以包含其他宏(一些编译器不支持这种嵌套功能)

P525 预处理器可能将替换体解释为记号或字符串

P525 ANSI标准中,如果出现重复宏定义,只有新旧定义完全相同才允许重定义

P527 必要时使用足够多的圆括号来确保运算和结合的正确顺序

一般而言,不要在宏中使用递增或递减运算符,以免出现如下所示的未定义语句:

++x*++x;

P528 C允许在字符串中包含宏参数。

在函数宏的替换体中,#号作为一个预处理运算符,可以把记号转换成字符串。这个过程称为字符串化(stringizing)。

P529 变参宏:…和__VA_ARGS__

P535 如果宏通过头文件引入,那么#define在文件中的位置取决于#include指令的位置

P538 预处理运算符defined

如果它的参数使用#define定义过,则返回1;否则返回0.

#if defined (VAX)

P552 通用工具库的atexit()函数

atexit()注册函数列表中的函数,当调用exit()时会执行这些函数。

ANSI保证,在这个列表中至少可以放32个函数。exit()执行这些函数的顺序与列表中函数的顺序相反,即最后添加的函数最先执行。

注意,main()函数结束时会隐式调用exit()。

P555 指针赋值时的强制类型转换,在C中是可选的,在C++中是必须的

P558 memcpy()和memmove()

两函数原型为:

void *memcpy(void * restrict s1, const void * restrict s2, size_t n);
void *memmove(void *s1, const void *s2, size_t n);

编译器不会在本不该使用memcpy()时禁止你使用,作为程序员,在使用该函数时有责任确保两个区域不重叠。

P560 可变参数:stdarg.h

————2020-1-9@燕卫博————

C语言的指路灯!解析《C Primer Plus》对我们的影响! C语言的指路灯 C语言从早期的非正式的K&R标准,发展到1990 ISO/ANSI标准,进而发展到2011 ISO/EC标准。本书也随着逐渐成熟,发展到现在的第6版。在所有这些版本中,我的目标做致力于编写一本指导性强、 条理清晰而且有用的C语言教程。 ——《C Primer Plus》系列书籍作者 Stephen Prata 很多人会问:C语言这么好,我也想学好它,但是我该怎么开始第一步呢? 万事开头难,跟着教材开始学就好了。 C语言书这么多,我该买哪一本呢? 其实,从C语言面世以. 阅读详情

相关推荐

C语言自学指南:从《C Primer Plus》到项目实战的完整路线

C语言作为计算机编程的基石,其核心在于对内存和硬件的直接操作能力。理解其工作原理,如指针和内存管理,是掌握系统编程、嵌入式开发等底层技术的关键。这些基础概念不仅决定了程序的效率与稳定性,更是学习数据结构、操作系统等高级课程的必备前提。通过体系化的教材与循序渐进的实践,学习者能将语法知识转化为解决实际问题的工程能力。本文以《C Primer Plus》这本经典教材为主线,结合**指针**和**内存管理**等核心热词,为自学者提供从环境搭建、概念攻克到综合项目开发的完整学习路径,帮助读者避开常见误区,扎实构建C

weixin_30522183的博客 344

GetLastError

GetLastError: 〖0〗-操作成功完成。 〖1〗-功能错误。 〖2〗-系统找不到指定的文件。 〖3〗-系统找不到指定的路径。 〖4〗-系统无法打开文件。 〖5〗-拒绝访问。 〖6〗-句柄无效。 〖7〗-存储控制块被损坏。 〖8〗-存储空间不足,无法处理此命令。 〖9〗-存储控制块地址无效。 〖10〗-环境错误。 〖11〗-试图加载格式错误的程序。 〖12〗-访问码无效。 〖13〗-数据...

wanshouyuan的专栏 1万+

C Primer Plus 第6版 学习笔记——第1章 初识C语言

第一章没什么好讲的,简单的知识点解析

dorm517的博客 371

重装系统遇到的一系列问题

重装系统;

root@dream 5583

C语言高效自学路线:基于《C Primer Plus》的实战指南

C语言作为一门接近底层的编程语言,其核心价值在于帮助开发者深入理解计算机的内存管理、指针操作等底层原理。掌握C语言不仅能够编写高效的系统软件和嵌入式程序,更是学习数据结构、操作系统等高级课程的坚实基础。在实际工程应用中,C语言常用于开发操作系统内核、驱动程序和性能敏感的应用程序。对于初学者而言,选择一本结构清晰、讲解透彻的教材至关重要。《C Primer Plus》作为经典教材,以其自解释性强和符合认知规律的特点,成为许多程序员的首选。通过结合指针、内存管理等核心概念的系统学习,并辅以调试技巧和项目实践,学

weixin_34185512的博客 435

Unity线性空间下PSD透明贴图黑边问题:原理分析与三种解决方案

在计算机图形学中,颜色空间转换与Alpha混合是渲染管线的基础环节。伽马空间与线性空间的差异源于显示设备与人眼感知的特性,现代渲染引擎采用线性工作流以实现更真实的光照计算。然而,当图像处理软件(如Photoshop)导出的纹理数据与游戏引擎(如Unity)的预期格式不匹配时,就会引发技术问题,影响视觉保真度与开发效率。具体表现为,在线性空间下进行Alpha Blend混合时,带透明通道的纹理边缘常出现异常黑边或颜色失真,其核心根源在于纹理数据是否经过“预乘”处理与sRGB标记的解读冲突。这一问题的解决对于提

weixin_34198762的博客 379

求大佬解答,装系统出现这个是什么原因,winsetup安装失败0x25d,指定的缓冲区包含类型错误的数据

首次点亮后进行了内存条解锁频率,然后用pe装机一直提示这个,格式化了磁盘分区,重启多次也没用。

hwzz0007的博客 6599

PLc S7-200 smart如何使用Modbus 485通讯传输接收数据

西门子在 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟量 I/O 以及保持寄存器,从而实现PLC通过modbus方式控制其他器件。提示:以下是本篇文章正文内容,下面案例可供参考。

xjbsw0的博客 6万+

VS错误代码列

0-操作成功完成。 1-函数不正确。 2-系统找不到指定的文件。 3-系统找不到指定的路径。 4-系统无法打开文件。 5-拒绝访问。 6-句柄无效。 7-存储控制块被损坏。 8-存储空间不足,无法处理此命令。 9-存储控制块地址无效。 10-环境不正确。 11-试图加载格式不正确的程序。 12-访问码无效。 13-数据无效。 14-存储空间不足,无法完成此操作。 15-系统找不到指定的驱动器。 16-无法删除目录。 17-系统无法将文件移到不同的磁盘驱动器。 18-没有更...

张家小丫头的博客 6589

oscp备考,oscp系列——Djinn3靶场:ssti漏洞,pkexec提权

oscp备考,oscp系列——Djinn3靶场:ssti漏洞,pkexec提权难度简单偏上对于低权限shell获取涉及:ssti漏洞对于提权:pkexec提权。

2202_75361164的博客 633

【目标跟踪】ECO算法论文阅读:ECO: Efficient Convolution Operators for Tracking

这里所指的训练集是指保存了每一帧的跟踪结果的训练集,也就是说,每一次进行model update的时候,要用在这一帧之前所有跟踪到的样本。那么随着视频越来越长,这个训练集就会越来越大。因为当目标被遮挡或者丢失的时候,比较新的这些样本本身就是错的,那么模型很容易有model drift,就是被背景或者错误的目标污染,导致跟踪结果出错。如下图所示,Baseline是传统的训练集,每更新一帧就加一个进来,那么连续的数帧后训练集里面的样本都是高度相似的,即容易遗忘前面的样本,且容易对最近的若干帧样本过拟合。

qq_43799400的博客 2609

清除缓存区的错误数据

处理非法数据 常常用于清除缓存区的字符的语法 while(getchar()!='\n');/*清除缓存区的非法字符*/ fflush(stdin);/*清除缓存区的错误数据*/ 问题:输入两个整型数,计算并输出两个整数的最大值。如果用户不慎输入了非法字符,那么程序可提示“‘输入数据个数或格式错误” 这个简单程序就用到了fflush #include<stdio.h> main()...

qq_43490337的博客 3635

银河麒麟v10(x86_64)升级openssh实操成功

本文详细介绍了在银河麒麟V10系统上将OpenSSH从8.2p1升级至9.9p2版本的全过程。主要内容包括:系统环境确认、安装telnet备用连接、备份配置、卸载旧版本、安装新版本、服务配置与验证等关键步骤。特别强调了安全注意事项,如必须安装telnet作为备用连接、重要配置备份等。升级后提供了安全加固建议,包括修改SSH端口、禁用root登录等。文章还包含详细的故障排查方法和恢复方案,确保升级过程安全可靠。通过本教程,用户可以顺利完成OpenSSH版本升级,提升系统安全性。

淘淘小窝 1086

整理:C primer plus 学习笔记

前言:简单看了一遍C Primer Plus, 整理了一下,因为时间比较少,自己理解地比较肤浅,所以第一版比较简陋。 假期的时候应该会有时间再整理一下。------2018/11/5 2019/1/23 寒假整理一下笔记。 2019/3/7 大二下学期记:这本书内容还是很多的,举例比较多,也涉及了一些C语言的”高级“特性,有些地方难度很高,但是即使没能掌握也并不影响使用C语言。感觉想用笔记来...

一只大鸽子的博客 1万+

FreeRTOS系统从入门到精通万字保姆级教程

例如,在基于ARM的硬件平台上,可能需要实现针对ARM处理器的上下文切换代码,并确保FreeRTOS能够正确地响应和处理ARM架构的中断。需要注意的是,在删除任务之前应确保任务已经完成了其所有重要的工作,并且没有其他的任务依赖于它,以避免数据丢失或系统不稳定。任务的优先级设定是其中的关键环节。在复杂的系统中,可能会有大量的任务需要同时运行,而这些任务的重要性和紧急程度各不相同。这通常包括创建初始任务(这些任务将负责系统的初始化和后续任务的调度)、设置系统时钟(以确保任务的准时调度和延时功能的正确性)等。

大模型大数据攻城狮的专栏 2066

搭建一个简单的 Django + Vue 项目

在本文中,我将为您详细介绍如何搭建一个简单的 Django + Vue 项目。Django 是一个使用 Python 编写的高级 Web 框架,而 Vue 是一个流行的 JavaScript 框架,用于构建用户界面。通过结合 Django 和 Vue,我们可以创建强大的全栈 Web 应用程序。创建 Django 项目设置 Django 后端创建 Vue 前端连接 Django 和 Vue让我们开始吧!

JfpBlockchain的博客 350

C++Primer Plus学习笔记

此博文是通过翻阅C++ Primer Plus中文第6版(2020),逐章学习记录笔记由此学习C++的基础特性和语法知识,有别于其它视频教学+代码+笔记的学习途径,更趋向传统的书籍+代码+笔记学习,Cpp第6版以C++11标准为主,学习C++基础编程绰绰有余.

weixin_45068267的博客 3198

[Dify实战] 解决 Dify 导入 DSL 文件时报 “DSL 版本差异” 的兼容性问题

摘要:本文针对Dify开发者在导入.dsl文件时遇到的版本警告提示问题,分析其根源在于DSL文件与当前系统版本不一致。解决方案是通过导出当前Dify应用的DSL文件查看版本号,手动修改待导入文件的version字段以匹配。文章详细说明了操作步骤,并给出使用专业编辑器、避免修改其他字段等实用建议,帮助开发者规避版本不兼容问题,提升多模态AI应用开发效率。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 960

《C Primer Plus》的正确学习姿势是什么?

我们常常听到有人争论“Python、Java、PHP......是这个世界上最好的语言”,却很少听到有人夸赞C语言,为什么呢?因为C语言实在是太太太太难了...... 为什么这么多人学不会C语言呢?因为很多人觉得用C语言作为入门语言觉得太难了,里面还有指针,回调,递归之类的操作太难了。为什么这么多人觉得C语言难?异步君根据网友的分享总结了一下: C语言本身存在一定难度 C语言相比现在比较流行的java,python等语言在入门的方面显得稍微难点,特别是里面的C语言里面的一些函数指针,指针函..

优快云 官方博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C primer plus 学习笔记 第1章 初识C语言

第1章 初识C语言 这章主要介绍了一些C语言的历史,还有编写程序的过程。 目录 第1章 初识C语言 ​ 1.1 C语言的起源 1.2 选择C语言的理由 1.3 C语言的应用范围 1.4 计算机能做什么 1....

一只大鸽子的博客 5051

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

《C Primer Plus》学习笔记—第3章

变量,常量; 基本数据类型 转义序列 整数类型 int,char,double,float,short,long,unsigned 进制

chaofeng426的博客 608

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【免费下载】 《C Primer Plus 第6版 中文版》:开启你的C语言编程之旅

《C Primer Plus 第6版 中文版》:开启你的C语言编程之旅 【下载地址】CPrimerPlus第6版中文版资源简介 《C Primer Plus 第6版 中文版》资源简介欢迎来到《C Primer Plus 第6版 中文版》的学习资源页面 ...

gitblog_06546的博客 1589

C Primer Plus 第六版 中文版PDF下载

C Primer Plus 第六版 中文版PDF下载 【下载地址】CPrimerPlus第六版中文版PDF下载 《C Primer Plus》第六版中文版PDF是一份宝贵的学习资源,适合所有希望掌握C语言的读者。本书由Stephen Prata编写,内容从基础语法到高级特性,涵盖了函数、指针、结构体等核心知识,并配有丰富...

gitblog_06758的博客 5424

初识C语言 ——“C Primer Plus”

初识C语言噢

weixin_74957752的博客 4724

读书记之《C Primer Plus》

英文名:《C Primer Plus》(5th) 作者:Stephen Parta 出版社:Sams 新公司的第一个月,重心放在了解项目组的基本情况,另外,通过配合前辈们做些简单的测试工作,学习一些工作上的知识和技能。一个偶然的机会,看到同组的同事在案头放了一本《C Primer Plus》,好奇心的驱使下,向同事借阅了一下,由于时间比较短,当时只看了一下目录和某一章的一小节,然后,决定买一

qq123386926的专栏 1497

重新学习c语言的实验《c primer plus》初识c语言和c语言概述

由于本人之前学过c语言,所以进度和方法及其心得体会如果是c的初学者不宜模仿。大佬随意本文适合学过c语言的人来借鉴。希望可以抛砖引玉。

weixin_52766015的博客 1245
上一篇: RTL8192CUS驱动程序编译
下一篇: C Primer Plus学习笔记——C99/C11新特性
燕卫博
博客等级 码龄7年 312粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值