咱啥都不会,咱啥也不敢说

1.解锁新技能-指针

   (1)指针变量是一个专门用来存放另一个变量地址的变量,指针变量的值是地址。

   (2) 数组名不代表整个数组,只代表数组首元素的地址。

int edg[1,2,3];
int *p;
p=&a[0];    //p的值是a[0]的地址
p=a;        //p的值是数组a首元素的地址

(3)指针的算术运算

在指针已指向一个数组元素的时候,指针可以加上或减去一个整数。指针的这种运算的意义和通常的数值的加减运算的意义是不一样的,以单元为单位。

 

   int a[20]; 
    int *p=a; 
    p++; 

上例中指针p的类型是int*,指向的类型是int。

int占4个字节,故指针p加1,p所指向的地址由原来的变量a的地址加了4个字节。

(4)&和*

&是取地址运算符,*是间接运算符。
&a 的运算结果是一个指针,指针的类型是a 的类型加个*,指针所指向的类型是a 的类型,指针所指向的地址嘛,那就是a 的地址。
*p 的结果是p 所指向的东西,它的类型是p 指向的类型,它所占用的地址是p所指向的地址。
 

(5)函数

用指针实现冒泡排序

#include <stdio.h>
void Sort(int *p,int c);
int main(void){
	int n,i,a[100];
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&a[i]);
	Sort(a,n);
	for(i=0;i<n;i++)
		printf("%d ",a[i]);
}
void Sort(int *p,int c)
{     int i,j,t;
	
      for(i=0;i<n;i++)
		for(j=0;j<c-i-1;j++){
			if(*(p+j)>*(p+j+1)){
			t=*(p+j);
			*(p+j)=*(p+j+1);
			*(p+j+1)=t;
			}
		}
		
	}
	return ;	
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值