猿问

以下语句把指针变量换成数组是否功能一样?

int A[10];

int B[10];

int *p;

int A[10];

int B[10];

int *p;

void giveV(){

   p = A;    //如何理解这里p的功能,它是怎么实现分别给A、B数组赋值的?

   giveValue( );  

   p = B;    //p如果改成一个数组C[10],这里改成A=B和C=B,还能实现一样的效果么?

   giveValue( );

}

void giveValue( ){

    //通过一串语句对数组进行赋值,比如p[0]=0...

   }

}


JustV
浏览 1436回答 1
1回答

望远

如何理解这里p的功能,它是怎么实现分别给A、B数组赋值的?数组名是数组首元素的地址,而p是一个指针变量,可以对它赋值一个具体变量的地址,所以p=A是合理的,通过操作p来修改数组A的数据。如*p=*p+1;将首元素+1,p++;指向第二个元素.....p如果改成一个数组C[10],这里改成A=B和C=B,还能实现一样的效果么?不能,int C[10];表明C也是数组名,而数组名是指针常量,值不可变,所以A=B和C=B是非法的。
随时随地看视频慕课网APP
我要回答