69,382
社区成员
发帖
与我相关
我的任务
分享
int sum(int ar[], int n);
//会编译成:
int sum(int *ar, int n);
指针变量ar保存的是数组首元素的指针(地址),在访问首元素的值的时候可以使用*ar(表达式);
如:
int n=*ar;
其中*为间接访问运算符,其意在于访问ar指向(保存的变量的地址)的变量中的值
在操作数值指针的时候可以使用ar+i的方式访问数据的第i个元素的地址(因为ar指向第一个元素的地址),
如果要取出第i个元素的值,可以使用间接访问运算符*,表达式为: *(ar+i)
为了便于指针操作,在c语言中提供了另外一种另外运算符[],为下标运算符;
如ar[i]就可以直接取出指针指向变量的值,这里是一种直接的表达(其实内部还是使用了ar+i的方式取出第i个元素的地址,然后使用*(ar+i)取出第i个元素的指);
等价伪代码如下
//temp指向了第i个元素(保持了第i个元素的地址)
int *temp=ar+i;
//取出第i个元素的指赋给n
int n=*temp;
/*
利用[]下标运算符可以将上述两行代码可以写成一行
*/
int n=ar[i];
[]可以使用在任何指针变量中,只不过有时不一定有意义(非连续的存储结构);
希望你自己慢慢理会……