void changeA(int *);
int *getPoint();
void changeArray(int array[]);
int *getArray();
int main()
{
int a=10;
changeA(&a);
printf("a=%d\n",a);
int *b;
b=getPoint();
printf("*b=%d\n",*b);
int array[]={1,2,3};
changeArray(array);
printf("array[0]=%d\n",array[0]);
int *p=getArray();
/*
*p ---- 取指向地址的值
p[0] ---- 取指向地址的值
p+1 ---- 指向地址+1
*(p+1) ---- 取 指向地址+1 的值
*/
printf("*p=%d, p[0]=%d, *(p+1)=%d\n",*p,p[0],*(p+1));
return 0;
}
/*
参数为指针的函数
*/
void changeA(int *a)
{
*a=100;
}
/*
返回指针的函数
*/
int *getPoint()
{
int b=200;
return &b;
}
/*
参数为数组的函数(传数组相当于传指针)
传数组就是传递数组的首地址
*/
void changeArray(int array[])
{
array[0]=300;
}
/*
返回数组的函数(相当于返回数组首地址)
返回数组首地址就是返回指向函数首地址的指针
*/
int *getArray()
{
int array[]={100,200,300};
return array;
}
输出结果
a=100
*b=200
array[0]=300
*p=100, p[0]=100, *(p+1)=200