指針3

#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;
}
相關文章
相關標籤/搜索