当前位置: 首页 > 编程日记 > 正文

c基础知识复习

C的发展历程

C原本是为了开发UNIX操作系统而设计的语言;如此说,应该C比UNIX更早问世,而事实并非如此,最早的UNIX是由汇编写的;

C语言本来是美国人开发的,解读C的声明,最好还是用英语来读;

解读C声明的步骤:

1、首先着眼于标识符(变量名或者函数名)

2、从距离标识符最近的地方开始,依照优先顺序解释派生类型(指针、数组和函数)。优先顺序说明如下:

a、用于整理声明内容的括号;

b、用于表示数组的[ ],用于表示函数的( )

c、用于表示指针的*

3、解释完成派生类型,使用 “of”、 “to”、“returning”将它们链接起来;

4、最后,追加数据类型修饰符(在左边, int、double等)

int  (*func_p)(double);

1、着眼于标识符。即:func_p  /*/  func_p   is

2、因为存在括号,着眼于括号*:  /*/func_p is  pointer  to

3、着眼于用于整理声明内容的括号: /*/func_p  is pointer to function(参数是double)  returning

4、最后、解释数据类型修饰符int : /*/  func_p  is pointer  to function (参数是double) returning int

翻译成中文:func_p 是指向返回值为int 的函数的指针;

C语言的声明不能从左往右按顺序解读;而是左右来回地解读;

基本类型和派生类型:

int  (*func_table[10])(int  a);

func_table  is  array(元素个数为10)   of  pointer  to function(参数int类型)   returning  int

上面的表示方法叫做“类型链的表示”

C的派生类型:

1、结构体  2、共用体  3、指针(指向的类型不同)  4、数组  5、函数(参数不同)  

指针类型派生:

  对指针进行加法运算,指针只前进 指针所指向类型的大小的距离,这一点具有非常重要的意义;

“指向数组的指针”,

  错误理解:数组名后不加[ ] ,不就是“指向数组的指针”吗?

的确,在表达式中,数组可以被解读成指针,但是, 这不是“指向数组的指针”, 而是“指向数组初始元素的指针”

(之后就是涉及一个+1指针的跨度问题,很经典的问题)

C的声明中, [ ]比*的优先级高----------这一点很重要,在分析声明过程中;

C语言中不存在多维数组:

int   [2][3]模型如下:

C语言中不存在多维数组。看上去像多维数组,其实是“数组的数组”

共用体的语法和结构体相识,但是,结构体的成员是“排列地” 分配在内存中, 而共用体的成员则是“重叠地”分配在内存中;

分析世界上最有名的程序:

printf("hello  world \n");

第1个参数总是传递字符串常量;

可是,在stdio.h的原型声明中, printf()的第1参数被定义为:“指向char指针”

字符串常量的类型为“char 的数组”, 因为在表达式中,所以它也可以当成 “ 指向cahr的指针”。以此,字符串常量可以传递给printf() 是很自然的事;

变量:

作为变量,它有作为“自身的值”使用 和 作为“自身的内存区域”使用两种情况;

表达式代表某处的内存区域的时候,我们称当前的表达式为“ 左值(lvalue)”,

相对的是,表达式只是代表值的时候,我们称当前的表达式为“右值”

 表达式中有时候存在左值,有时候不存在左值;

”左值“这个词汇的由来:

在C以前的语言中,因为表达式在赋值的左边,所以表达式被解释成左值。“左”在英文中是left, left value 就被简写成lvalue

但在现代C中,++var这样写法也是合法的,此时var是指某处的内存区域,但是怎么看也看不出“左边”的意思。因此,左值这个词真有点让人摸不着头脑;

在标准委员会的定义中, lvalue的l不是left的意思,而是表示locator(指示位置的事物)。

相关文章:

训练 GPT-3,为什么原有的深度学习框架吃不消?

本文梳理了深度学习框架在支持大规模预训练模型时面临的技术挑战,以及当前各类框架的基本解决思路,帮助算法工程师对业界各类框架的分布式训练能力有更清晰的认知。作者 | 一流科技CEO袁进辉头图 | 下载于ICphoto近年来,深度学习被广泛应用到…

ImageMagick简单记录

一、安装 mac下的安装非常简单 brew search ImageMagick brew install xxx 安装后,可验证 magick logo: logo.gif identify logo.gif display logo.gif 更多安装方式参考:http://www.imagemagick.org/script/download.php 二、命令介绍 命令概览convert&…

低代码、RPA 和 AI,有什么区别

来源 | LowCode低码时代头图 | 下载于视觉中国在To B领域,低代码、RPA和AI可谓是“流量担当”,它们自带To B基因,搭载快速发展的企业服务赛道,在企业级IT服务这一细分市场崭露头角。以这三者为代表的前沿理念和科技引领IT产业升级…

C# 获取 IE 临时文件

大家知道&#xff0c;在我们访问一个网站的时候。系统会把这个网站上的图片&#xff0c;动画等内容全部缓存到Internet临时文件夹中。 我们可以通过 <Drives>:/Documents and Settings/<user>/Local Settings/Temporary Internet Files访问。但是可能我们都没有想…

wifidog接口文档(转)

目录(?)[-] 网关心跳协议 请求信息 回复格式 例子用户状态心跳协议 请求格式 注意 回复格式 状态码 例子跳转协议 请求格式 例子注册协议 请求格式 例子wifidog是搭建无线热点认证系统的解决方案之一&#xff0c;他比nocat更适合互联网营销思路。目前支持openwrt系统&#xff…

Oracle XQuery 过滤XML查询SQL

Oralce 支持SQL XQuery查询 一个简单示例&#xff1a; SELECT XMLQuery(for $i in /Videogame return $i/Type passing by value X RETURNING CONTENT) FROM (SELECT XMLTYPE(<Videogame><Type>Racing</Type><Name>NFS Most Wanted</Name><…

C#2.0匿名函数

C# 2.0中提供了通过delegate实现匿名函数功能&#xff0c;能有效地减少用户记代码工作&#xff0c;例如 以下为引用&#xff1a; ... button1.Click new EventHandler(button1_Click); ... void button1_Click(Object sender, EventArgs e) { // Do something, the button…

第三届北京智源大会开幕,全球最大智能模型“悟道2.0”重磅发布

6月1日&#xff0c;由北京智源人工智能研究院&#xff08;以下简称智源研究院&#xff09;主办的2021北京智源大会在北京中关村国家自主创新示范区会议中心成功开幕。 北京智源大会是智源研究院主办的年度国际性人工智能高端学术交流活动&#xff0c;定位于“AI内行顶级盛会”…

Cloneable接口和循环冗余校验算法

1 Cloneable 接口 实现该接口的类可以调用clone()方法合法地对该类实例进行按字段复制。按照惯例&#xff0c;实现此接口的类应该使用公共方法重写 Object.clone&#xff08;它是受保护的&#xff09; 2 循环冗余校验算法 循环冗余校验&#xff08;英语&#xff1a;Cyclic redu…

IOS自定义表格UITableViewCell

在UITableView中&#xff0c;自定义表格&#xff0c;最原始是继承UITableViewCell&#xff0c;然后通过写代码方式去搞&#xff0c;但是这个费事了。 1.在storyboard中 给一个ViewController的tabieview增加自定义的UITableViewCell&#xff0c;可以直接从 object Library里面选…

postfix邮件服务器搭建

项目环境&#xff1a;一台server ip:192.168.1.100 一台mail ip:192.168.1.200 一台win7 ip:192.168.1.222项目需求&#xff1a;1&#xff1a;在DNS Master上搭建DNS&#xff0c;能够解析mail.sw.com2&#xff1a;在Mail Server上部署邮件服务器&#xff0c;和webmail软件3…

从DataView中生成Excel报表的方案(C#)

正文&#xff1a; 一、首先要引用一个Excel的组件&#xff0c;我一开始是在Office XP下尝试的&#xff0c;不 成功&#xff0c;后来把XP给干掉&#xff0c;装2k&#xff0c;就成功了&#xff0c;所以这里分享的是Office 2k下 引用相关组件来实现功能的&#xff0c;在工程中引…

被Python「苦虐」的日子太惨了!

Python因为其优越的特性广泛应用于数据分析、人工智能、Web开发、后端开发、自动化测试/运维、爬虫等领域&#xff0c;也得到了很多企业的青睐。甚至连BATZJ的技术大牛&#xff0c;都无可否认Python现在对于一个程序员发展的重要性&#xff01;最近一两年&#xff0c;我身边也有…

BeanUtils威力和代价

2019独角兽企业重金招聘Python工程师标准>>> BeanUtils: 威力和代价&#xff08;转载综合&#xff09; Apache Jakarta Commons项目非常有用。我曾在许多不同的项目上或直接或间接地使用各种流行的commons组件。其中的一个强大的组件就是BeanUtils。我将说明如何使…

C# 线程无法开启窗口的原因

在 C# 里面, 主窗口拥有主线程, 主线程产生子线程监控 Socket 埠, 子线程一收到数据流就会给主线程发送一个事件, 创建一个窗口. 现在的情况是子线程能够收到数据流, 主窗口能够收到子线程发送过来的事件, 能够创建一个窗口. 这个窗口有问题: 窗口状态像死掉程序的窗口一样, 反…

给力!斩获 GitHub 14000 Star,两周创办开源公司获数百万美元融资

作者 | 伍杏玲出品 | AI 科技大本营&#xff08;ID:rgznai100&#xff09;上世纪 90 年代初&#xff0c;21 岁大学生 Linus Torvalds 开源 Linux 操作系统&#xff0c;自此掀起全球开源浪潮。随后“中国 Linux 第一人”宫敏博士用手提肩背的方式将 20 盒磁带背回中国&#xff0…

root密码忘记怎么办

开机按e进入系统的紧急求援模式依次输入一下命令&#xff1a;mount -o remount&#xff0c;rw /sysrootchroot /sysrootecho "输入新密码" | passwd --stdin rootexitreboot转载于:https://blog.51cto.com/11552940/1971850

C#内容分页简单实现代码及祥解

//定义变量 int i,start,stop,t,stat,statt,pp,pagecount,pagesize; //变量初始值 stat0; statt0; start0;//开始查询的字符串位置&#xff0c;初始为0 stop0; pagesize2000;//定义每页至少显示字符串数 pagecount0; //获得当前的页数 paRequest.Params["page&qu…

灵活越障、花样空翻,腾讯轮腿式机器人亮相机器人顶会 ICRA

6月3日&#xff0c;腾讯轮腿式机器人Ollie&#xff08;奥利&#xff09;正式亮相。它像一个灵活的“轮滑小子”&#xff0c;能完成跳跃、360度空翻等高难度动作。 轮腿式机器人&#xff08;wheel-legged robot&#xff09;是近年来机器人研究的前沿领域。Ollie兼具轮式结构和腿…

android学习笔记之十服务(Service)

2019独角兽企业重金招聘Python工程师标准>>> Service拥有一个单独进程的模块. 1,继承自Service类,须实现public IBinder onBind(Intent intent) 2,通过startServie触发运行,stopService终止运行 生命周期: onCreate(如果是第一次运行) -> onStart -> onDest…

宝塔Linux常用命令

https://www.bt.cn/bbs/thread-1186-1-1.html 2017年3月8日发布全新架构的宝塔Linux 面板3.1Beta版&#xff0c;到现在的5.2.0正式版&#xff0c;历经100多天打磨&#xff0c;宝塔研发工程师做了大量优化适配&#xff0c;从最开始的只支持CentOS到现在支持CentOS、Ubuntu、Debi…

EMAIL发送系统(C#+基于SMTP认证) 2.0

这个是对于 EMAIL发送系统(C#基于SMTP认证) 1.0 的改版这个第一版是2002年11月写的&#xff0c;过了一年半了&#xff0c;才有人提意见&#xff0c;就修正了一下&#xff0c;因为后来做的项目一直用不上&#xff0c;也就没有注意到 前段时间有网友反馈了一些问题&#xff0c;这…

“奥利”来啦,腾讯Robotics X实验室跑出的“轮滑小子”

6月3日&#xff0c;腾讯Robotics X实验室的新成员——轮腿式机器人Ollie&#xff08;奥利&#xff09;正式亮相&#xff0c;它是机器狗Jamoca、Max和自平衡自行车之后&#xff0c;实验室又一创新成果。轮腿式机器人&#xff08;wheel-legged robot&#xff09;是近年来机器人研…

如何写一篇好的技术博客

在工作过程中&#xff0c;发现对很多东西都一知半解&#xff0c;不是很透澈&#xff0c;到头来很容易模糊&#xff0c;如果有一篇好的技术博客予以总结&#xff0c;一来即使忘记了&#xff0c;回国头来再看&#xff0c;仍然能 够从自己的思路中恢复&#xff1b;二来总结一下&am…

使用react心得

为什么80%的码农都做不了架构师&#xff1f;>>> 在使用react中,总会碰到这样那样的问题,如何解决这些问题,希望能够随着时间的积累,慢慢成熟! 在react中的renden函数里,不能使用setState这个方法,不然会死循环,原因:是因为setState会触发render,而render后又触发se…

将Byte数组转化为String

FCL得很多方法的返回值都是包含字符的Byte数组而不是返回一个String&#xff0c;这样的方法包含在如下的类中&#xff1a; System.Net.Sockets.Socket.Receive System.Net.Sockets.Socket.ReceiveFrom System.Net.Sockets.Socket.BeginReceive System.Net.Sockets.Socket.B…

[题解]UVA10054 The Necklace

链接&#xff1a;http://vjudge.net/problem/viewProblem.action?id18806 描述&#xff1a;给出一堆珠子&#xff0c;每个珠子有两种颜色&#xff0c;有一端颜色相同的珠子可以串在一起&#xff0c;问是否可以把所有珠子串在一起&#xff0c;并求其中一种方案。 思路&#xff…

程序员大厂不一定要进,算法必须要学!收藏89篇精选算法文章

为什么程序员都需要学算法&#xff1f;程序员对算法通常怀有复杂情感&#xff0c;算法很重要是共识&#xff0c;但是否每个程序员都必须学算法是主要的分歧点。很多人觉得像人工智能、数据搜索与挖掘这样高薪的工作才用得上算法&#xff0c;觉得算法深不可测。在面试中&#xf…

专有云到混合云,是云计算的下半场?

查获案件案值达数十亿&#xff0c;为国家挽回近十亿元税款&#xff0c;是海关情报系统在全国应用一年后交出的答卷。 海关情报系统是海关总署与阿里云专有云共同搭建海关大数据云平台后推出的首个应用。 专有云的使命&#xff1a;激发政企大脑潜能 十年前&#xff0c;自己动手D…

C# 2.0 的partial

partial 关键字的作用是将你的 class 分为多个部分&#xff0c;编译器会将多个部分拼到一起去。 public partial class SampleClass ...{ public void MethodA() ...{ } } public partial class SampleClass ...{ public void MethodB() ...{ } } 和 public class Sa…