《The C Programming Language》学习笔记——指针与数组1

本文详细介绍了C语言中指针的基本概念、有效运算、与数组的关系及如何在函数参数中使用指针。通过实例讲解了指针的类型、运算规则及其在实际编程中的应用。


◆ 概念:指针是一种用于存放另一个变量的地址的变量。ANSI C中用类型void *作为通用指针类型。


◆ 指针的类型
     每一个指针对象有确定的数据类型,一个指针只能指向一个特定类型的对象。
     除 void* ,类型不一致要进行强制类型转换
    
如:int *p;
             
int x;
            
p = &x;
            
*p = *p + 10;


    有效的指针运算

     
1.相同类型指针之间的赋值运算。

     
2.指针值加或减一个整数值的运算。p + n
            在计算p + n时,n根据p所指对象的大小按比例缩放,而p所指对象的大小
定 于  p的说明。

     
3.指向相同数组中的元素的指针之间的减或比较运算。p < q
            如:指针p 和 q指向同一个数组成员,那么它们可以进行诸如 ==、
!=、 < 、>=   等关系比较运算。
           减运算:若 p < q,那么 q – p + 1就等于p和q所指元素之间的元素的数目。                              

     
4. 将指针赋0(或NULL)或指针与0的比较运算。指针赋0(或NULL)可预防野指针

     
5.指针算术运算具有一致性,所有指针运算都会自动考虑它所指对象的大小。


    指针与数组下标的比较

     
1.p = &a[0]; p = a;指针表示数组的首地址

     
2. pa[i] == *(pa + i) 一个数组和下标实现的表达式可等价地用指针和偏移量来实现。

     
3.指针比数组下标运算速度快,但有时难理解。在求数组元素a[i]的值时, C语言实际上先将其转换成 *(a+i)的形式然后再求值。

     
4. 数组名字与指针的区别:指针是变量,因而C中 pa++和pa = a合法。
                                                     
数组名字不是变量,因而 a=pa和a++非法。

◆ 指针与函数变元
      指针类型的变元使得被调用函数能够访问和更改调用函数中对象的值
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值