指针思维导图
指针C语言

**

基本类型指针

**
代码1

#include <stdio.h>
//不能改变a,b的值
void swap_1(int a,int b)
{
	int t=a;a=b;b=t;
}
//直接报错 这是地址的交换
void swap_2(int *p,int *q)
{
	int *t;
	t=p;
	p=q;
	q=t;
}
//可交换a,b的值
void swap_3(int *p,int *q)
{
	int t;
	t=*p;
	*p=*q;
	*q=t;
}
int main()
{
	int a=3,b=5;
	swap_1(a,b);
	swap_2(&a,&b);
	swap_3(&a,&b);
	printf("%d %d\n",a,b);
	return 0;

}

代码2

#include <stdio.h>
//通过被调函数修改主调函数的值 
//使函数返回一个以上的值
void g(int *p,int *q)
{
	*p=7;
	*q=10;
}
int main()
{
	int a=3,b=5;
	g(&a,&b);
	printf("%d %d",a,b);
}

**

数组指针

**
代码3

#include <stdio.h>
//快速传输数据
void g(int *p,int len)
{
	for(int i=0;i<len;i++)
		*(p+i)= *(p+i)  + 6;		//*(p+i)= p[i] == a[i] == *(a+i)
}
int main()
{
	int a[6]={1,2,3,6,4,5};
	g(a,6);
	printf("%d",a[4]);
}

代码4


#include <stdio.h>
//指针变量相减
int main()
{
	int a[5]={1,3,4,4,5};

	int *p=&a[0],*q=&a[3];

	printf("%d",q-p); //相隔多少个单元格
}

相关文章: