一般指针和指向指针的指针

详见代码

#include <stdio.h>

void func(int *p, int *a) //p是一个局部变量,*p是p指向的地址处的变量
{
	*p = 10;
	p = a;			//局部变量,只能在函数体中改变p的指向。作用范围是func函数
	*p = 100;
}
void printfunc()
{
	int x = 0, *p, a[3]={1, 2, 3};
	p = &x;
	printf("%d-%d\n",p,a);
	func(p, a);
	printf("%d-%d\n",p,a);
	printf("%d-%d-%d-%d", x, *p, a[0], a[1]);
}

void fun(int **p, int **a)
{
	*p = *a;       //改变了外层p的地址,p原来指向x,现在指向a[0]
}
void printfun()
{
	int x = 0, *p, a[3]={1, 2, 3};
	p = &x;
	int *q = a;
	printf("%d-%d-%d\n", p, q, a);
	fun(&p, &q);
	printf("%d-%d-%d\n", p, q, a);
	printf("%d-%d-%d-%d", x, *p, a[0], a[1]);
}
int main()
{
	printfunc();
        printf("\n");
	printfun();
	return 0;
}

  结果:

  1638128-1638112
  1638128-1638112
  10-10-100-2
  1638128-1638112-1638112
  1638112-1638112-1638112
  0-1-1-2 Press any key to continue

posted @ 2013-12-15 17:19  lkprof  阅读(268)  评论(0编辑  收藏  举报