c语言小问题,如图,这个指针法是什么意思?
发布网友
发布时间:2022-05-18 20:40
我来回答
共4个回答
热心网友
时间:2023-08-21 12:38
指针法就是通过指针运算来访问数组元素。
指针是可以运算的!指针的运算分为加法和减法,注意和普通的数字加减法有很大的区别:
指针的本质是一个内存地址,内存可以简单的认为是一整块空间,地址是从内存0开始连续的整数。指针的加法只能用指针加上一个整数,而不能是另一个地址,也就是说“指针+整数”是合法的,“指针+指针”是非法的。其实就像真实地址一样,比如说地铁和平西桥站距离起点宋家庄有20公里,立水桥站距离起点宋家庄有30公里,那么两个距离相加20+30是没有意义的,如果问离和平西桥站前方10公里是什么地址,就能算出20+10,即指针+整数(偏移量)。这个偏移量也可以是负数,可以看做是减法,但指针的减法还有一种形式就是“指针-指针”,不同于加法,这个减法是有意义的,从例子上可以看出,这个减法就是求两站之间有多远的。
回到你的问题,指针法就是用指针的加法来寻找数组元素的位置。这里还有一个前提是,数组一定是一块连续的内存,所以可以用指针的偏移来计算出元素的指针,然后通过*运算符来获得这个元素。
其实两个方法完全是等价的,可以当做公式来记。
热心网友
时间:2023-08-21 12:38
指针法就是使用的是一个指针运算结果:
a是指针
a+i是一个指针运算结果
*(a+i)是指针地址求值追问i不是数组的下标吗,怎么加的
追答编译器会按照类型处理
热心网友
时间:2023-08-21 12:39
数组名代表首地址,*a=a[0].那么*(a+1)=a[1],指针是指向的是地址懂吗?追问懂了!
热心网友
时间:2023-08-21 12:39
a是数组名,指向数组的起始位置,也就是第一个元素,i是偏移量,i是几,a+i就指向数组的第几个元素