指针那些事(一)

指针是一种保存变量地址的变量,即内存地址

一元运算符*是间接寻址或间接引用运算符

*ip + = 1 // ip指向的对象的值加1

等同于 ++ *p或者(*p)++,此处的圆括号是必需的,否则,该表达式将对ip进行加一运算,而不是对ip指向的对象进行加一运算,这是因为,类似于*和++这样的一元运算符遵循从有至左的结合顺序

Pa = &a[0]等同于Pa = a,因为数组名所代表的就是该数组最开始的一个元素的地址

对数组元素a[i]的引用也可以写成*(a+i)这种形式

&a[i]等同于a+i,其中a+i是a之后第i个元素的地址

数组名和指针之间有一个不同之处,指针是一个变量,在C语言中,语句pa=a和pa++都是合法的。但数组名不是变量,因此,类似于a=pa和a++的语句是非法的。

当把数组名传递给一个函数时,实际上传递的是该数组第一个元素的地址,在函数定义汇总,形式参数char s[]和char *s是等价的。我们通常更习惯于使用后一种形式,因为它比前者更直观地表明了该参数是一个指针。

可以将指向子数组起始位置的指针传递给函数,例如a是一个数组,那么下面两个函数调用f(&a[2])和f(a+2)都将起始于a[2]的子数组的地址传递给函数f。在函数f中,参数的声明形式可以为f(int arr[]){....}或f(int *arr){...}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值