#include <stdio.h>/*
2018-05-28
如何通过被调函数修改主调函数普通变量的值1,实参必须为该普通变量的地址2,形参必须为指针变量3,在背调函数中通过*形参名 = 。。。。。的方式就可以修改主调函数相关变量的值*/f(int *i,int *j)
{*i = 4;*j = 5;return 0;
}int main(void)
{int a = 3,b = 5;f(&a,&b); //发送a和b的地址到函数f,然后修改该地址的数值printf("a = %d,b = %d\n",a,b);}



#include <stdio.h>/*指针和数组指针和一位数组一维数组名一维数组名是个指针常亮它存放的是一维数组第一个元素地址程序		printf("%#X\n",&a[0]);printf("%#X\n",a);输出0X19FF2C0X19FF2C下标和指针的关系如果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,4f(a,6);printf("%#X,%d\n",&a[3],a[3]);	//0X19FF38,88return 0;
}