#include <stdio.h>
/*
指针和数组
指针和一位数组
一维数组名
一维数组名是个指针常亮
它存放的是一维数组第一个元素地址
程序
printf("%#X\n",&a[0]);
printf("%#X\n",a);
输出
0X19FF2C
0X19FF2C
下标和指针的关系
如果p是个指针变量,则
p[i] 永远等价于*(p+i)
界定一个一维数组需要的几个参数【如果一个函数需要一个一维数组,则需要接收该数组的那些信息】
指针变量的运算
指针和二维数组
*/
//________________________________________________________________________________________________
/*
//一维数组名
int main(void)
{
int a[5]; //a是数组名,5是数组元素的个数,元素就是变量a[0]--a[4]
// int a[3][4]; //3行4列 a[0][0]是第一个元素 a[i][j]是第i+1行j+1列
printf("%#X\n",&a[0]);
printf("%#X\n",a);
return 0;
}
*/
/*
//下标和指针的关系
int main(void)
{
int a[5] = {1,2,3,4,5};
int i;
for (i=0; i<5; ++i)
{
//printf("%d,%#X\n", a[i],&a[i]); //a[i] == *(a+i)
//printf("%d,%#X\n",*(a+i),(a+i));
//printf("%#X\n",a); //a是一个地址
}
return 0;
}
*/
//——————————————————————————————————————————————————
/*
//界定一个一维数组需要的几个参数【如果一个函数需要一个一维数组,则需要接收该数组的那些信息】
//两个,起始地址和数组长度
void f(int *p,int len)
{
int i;
for(i=0;i<len;i++)
{
printf("%d,",*(p+i));
}
printf("\n");
}
int main(void)
{
int a[5] = {1,2,3,4,5};
int b[6] = {-1,-2,-3,-4,-5,-6};
int c[100] = {1,99,22,33};
f(a,5);
f(b,6);
f(c,100);
return 0;
}
*/
//_____________________________________________________________________________________
void f(int *p,int len)
{
p[3] = 88;
printf("%#X,%d\n",&p[3],p[3]); //0X19FF38,88
}
int main(void)
{
int a[5] = {1,2,3,4,5};
printf("%#X,%d\n",&a[3],a[3]); //0X19FF38,4
f(a,6);
printf("%#X,%d\n",&a[3],a[3]); //0X19FF38,88
return 0;
}