C++ 数组指针下标的理解【个人学习笔记用】 |
您所在的位置:网站首页 › 字符类型的指针怎么表示 › C++ 数组指针下标的理解【个人学习笔记用】 |
一、C++中传递参数的三种方法
1. 直接按值传递 形如: int fun1(int a){ printf(a); }该方法会在调用函数时把传入的参数copy一份后在函数中进行操作,不会影响到原来的参数。 2. 指针(地址)传递 形如: int fun1(int *a){ printf(*a); }将参数的地址(指针)传进来,函数的操作会直接影响到原参数。函数内部使用时候需要取值操作,如 *a 3.引用传递 形如: int fun1(int &a){ printf(a); }这是c++特有的方式,很方便,能直接影响原参数的同时,在函数能可以直接用a就行。 另外附上一个对c++函数的参数传递写的比较好的博文,尤其是对引用参数的理解 https://blog.csdn.net/qq_34170700/article/details/104389168 二、数组指针,数组指针下标形如int a[ ]={1,2,3,4}的数组,&a后取的地址为数组中首元素的地址。 可以先看下面的代码,直观理解如下: int a[10],*pa; //先进行定义,pa是指针变量名,通俗讲就是指针 pa=&a[0]; //等价于 pa=a; //这意味着数组名a也是数组的首地址 //当然也可以连续赋值 int *pa=&a[0]; int *pa=a; //等效形式,以为定义的是int型的数组a,所以对pa+1,或换句话说对指针加一等价于当前地址顺序往下偏移4个字节,正好是下个数组元素,因此很多枚举enumeration都是对指针加一来遍历元素 *pa==a[0] //pa+1是指针运算 *(pa+1)==a[1] *(pa+i)==a[i] 最最重要的是这四者是等价的,本质上是一模一样的 a[i]==pa[i]==*(pa+1)==*(a+i)附一个小实验: #include #include using namespace std; int main(){ int a[]={1,2,3}; int *pa=a; cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |