一. 征服C指针:C是什么样的语言

为了解决眼前问题,由开发现场的人发明的
虽然使用方便,但看上去不怎么顺眼
如果不熟悉它的人糊里糊涂使用了它,难免会带来悲剧

C的发展历程

Ken Tompson使用汇编语言开发了UNIX。他又基于BCPL语言开发了B语言。B语言不直接产生机器代码,而是通过解释器执行中间代码,所以执行效率一般。
1971年Dennis Ritchie对B语言进行了改良,加入了char数据类型,并且可以直接生成机器代码。这样就诞生了C语言。
后来主要是为了满足使用UNIX的程序员的需要(用C语言改写了UNIX,并且开发人员也用它编写在UNIX上运行的程序),C语言一边接受来自各方面的建议,一遍摸着石头过河般的进行着周而复始的功能扩展。
1978年K&R出版了C语言宝典《The C Programming Language》,在ANSI C之前,此书一直作为C语言语法的参考书。
1989年对C进行了标准化,即ANSI C,因为是89年标准化的,所以也称为C89。后来1990年ISO组织采纳了该规范,即C90。1999年ISO进行了修订,即C99。最新的规范是C11。一般需要至少遵循ANSI C。
C的理念
trust the programmer (请信任程序员)
Don’t prevent the programmer from doing what needs tobe done.(不要阻止程序员去做需要做的工作)
keep the language small and simple(保持语言的小巧和简单)
Provide only one way to do an operation (为每一种操作只提供一种方法)
Make it fast, even if it is not guaranteed to be portable. (就算不能保证可移植性,也要追求运行效率)

C是危险的语言,随处有陷阱,几乎所有的C语言实现中,运行时的检查总是不充分的,如数组越界访问。

C是抱着“程序员万能”的理念设计出来的,在C的设计中,优先考虑的是:
1)如何才能简单的实现编译器
2)如何才能让程序员写出能够生成高效率执行代码的程序

而安全问题则被完全忽略了。

关于指针

K&R中这样定义指针:是一种保存变量地址的变量,在C中频繁的使用。

另外,在C语言标准中最初出现指针的部分,是这么描述的:
指针类型可由函数类型,对象类型等派生,指针类型描述一个对象,该类对象的值提供对该类引用类型实体的引用。

指针类型并不是单独存在,它是由其他类型派生而来。

指针的运算:C语言独有,可以针对指针进行加减运算。对指针加 N,指针前进“当前指针指向的数据类型的长度 × N”。

关于数组

表达式中,数组可以解读成“指向它的初始元素的指针。

p[i]是*(p + i)的简便写法,跟数组无关。

如果试图将数组作为函数参数进行传递,那实际传递指向初始元素的指针。所以调用函数无法知道实际数组的长度。

数组的声明和初始化:

int a[5] = {1, 2, 3, 4, 5};

不可分开写成:
int a[5];
a = {1, 2, 3, 4, 5};

原因:a是一个指针不可再指向一个数组表达式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值