#include<stdio.h>
void f( int *parr , int length)
{
int i;
for(i=0;i<length;i++)
{
printf("\n%d\n",*(parr+i));
}
}
int main()
{
int a[5];
int b[4];
printf("%#x\n",&a[0]);
printf("%#x",&a);
int c[5]={1,2,3,4,5};
int d[6]={-1,-2,-3,-4,-5,-6};
int e[100]={1,23,34,46};
f(c,5);
printf("---------------");
f(d,6);
printf("--------------------");
return 0;
/*
一维数组名是个指针常量;存放的是一维数组第一个元素的地址;
如果p是个指针变量,则,p[i] 永远等于*(p+i);
如果一个函数要处理一个数组,则需要接受该数组的 数组名,数组个数
*/
}
2.
#include<stdio.h>
void fun(int *pArr,int length)
{
printf("-------------------------");
pArr[3]=88;
printf("\n%x\n",pArr);//输出的是数组a的首地址 22fe40
printf("\n%x-%x\n",pArr[0],*pArr);//a的首地址里面的值 1 1
printf("\n%x\n",&pArr); //指针变量*pArr的地址 22fe00 ************************
printf("\n%x\n",&pArr[3]);// 22fe4c
printf("\n%x-%d\n",pArr[3],pArr[3]);
printf("-------------------------");
}
int main()
{
int a [5]={1,2,3,4,5};
int b [6]={-1,-2,-3,-4,-5,-6};
printf("************************");
printf("\n%x",a);//数组a的首地址aafe40
printf("\n%x",&a[0]);//数组a的首地址aafe40
printf("\n%d\n",a[0]);//数组a的首地址的值 1
printf("\n%x\n",&a[3]); //22fe40
printf("***********************");
printf("\n%d\n",a[3]);
fun(a,5);
printf("\n%d\n",a[3]);
printf("\n%x\n",&a[3]);
printf("\n%x\n",&a[4]);
//a = &a[2]; cannot convert from "int * " to "int [5]" a就是个指针常量
return 0;
}