指针3

  • 2020 年 1 月 14 日
  • 筆記

#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 = %dn",a,b);      }
#include <stdio.h>    /*  	指针和数组    		指针和一位数组  			一维数组名  				一维数组名是个指针常亮  				它存放的是一维数组第一个元素地址  				程序  					printf("%#Xn",&a[0]);  					printf("%#Xn",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("%#Xn",&a[0]);  	printf("%#Xn",a);    	return 0;  }  */    /*  //下标和指针的关系  int main(void)  {   int a[5] = {1,2,3,4,5};   int i;     for (i=0; i<5; ++i)  	{  		//printf("%d,%#Xn", a[i],&a[i]); //a[i] == *(a+i)  		//printf("%d,%#Xn",*(a+i),(a+i));  		//printf("%#Xn",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,%dn",&p[3],p[3]); //0X19FF38,88  }    int main(void)  {    	int a[5] = {1,2,3,4,5};  	printf("%#X,%dn",&a[3],a[3]); //0X19FF38,4  	f(a,6);  	printf("%#X,%dn",&a[3],a[3]);	//0X19FF38,88      	return 0;  }