指针——C的精华

1、变量访问方式:

直接访问:按变量地址存取变量值的方式

printf("%d",i);

scanf("%d",&i)

k=i+j;

……

间接访问:将变量的地址存放在另一个变量中。

例子:

#include<stdio.h>
void main()
{
	int i,j;
	int *pointer;
	pointer=&i;
	*pointer=3;
	printf("i=%d\n",i);
	printf("*pointer=%d\n",*pointer);
	printf("pointer=%u\n",pointer);
}


2、指针变量作为函数参数

#include<stdio.h>
void main()
{
	void swap(int *,int *);
	int a,b;
	int *pointer1,*pointer2;
	pointer1=&a;
	pointer2=&b;
	a=1;
	b=99;
	printf("a=%d\n",a);
	printf("b=%d\n",b);
	swap(pointer1,pointer2);
	printf("After swap:\na=%d\n",a);
	printf("b=%d\n",b);

}
void swap(int *p1,int *p2)
{
	int temp;
	temp=*p1;
	*p1=*p2;
	*p2=temp;
}

如果将swap函数改为

void swap(int *p1,int *p2)
{
	int *temp;
	*temp=*p1;
	*p1=*p2;
	*p2=*temp;
}
由于temp所指向的单元是不可预见的,对*temp赋值可能破坏系统的正常工作状态,运行结果为:


3、数组与指针

引用数组元素可用下标法(如a[3]),也可用指针法(即通过指向数组元素的指针)。

指针法能使程序质量高(占内存少,运行速度快)

int a[10];

1)、int *p=a int *p=&a[0] 等价

2)、*(p+i) *(a+i)a[i] p[i] 等价;

#include<stdio.h>
void main()
{
	int a[10]={1,2,3,4,5,6,7,8,9,0};
	int *p=a;
	printf("a[5]=%d\n",a[5]);
	printf("*(p+5)=%d\n",*(p+5));
	printf("*(a+5)=%d\n",*(a+5));
	printf("p[5]=%d\n",p[5]);
}

注意:

a++;是错误语句。数组名a是常量指针。编译器会报错。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值