指针3

发布时间:2019-07-03 12:55:04编辑:auto阅读(1282)

    #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);
    				输出
    					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;
    }


关键字