指针的笔记

一、指针的基本概念

1.&取值运算符的功能是取得对象的地址,表示对象的转换说明的为%p,p是pointer的首字母

2.当指针p的值为对象x的地址时,一般说“p指向x”,将取值运算符&写在Type型对象x前得到的&x为Type*型指针,其值为x的地址。

3.指针运算符*,*a即a指向的对象,当p指向x时,*p就是x的别名

什么也不指向的特殊指针是空指针,表示空指针的对象式宏NULL是空指针常量。

二、指针与函数

如果要在函数中改变变量的值,就需要传入指向该变量的指针,在指针前写上指针运算符*来访问该指针指向的对象,称为解引用。

将指向对象的指针作为形参,并在指针前写上*,就可以访问该对象本身。

#include<stdio.h>
void sum_diff(int a,int b,int *sum,int *diff)
{
	*sum=a+b;
	*diff=(a>b)?a-b:b-a;
}
void swap(int *a,int *b)
{
	int t=*a;
	*a=*b;
	*b=t;
 } 
int main()
{
	int a,b,s=0,d=0;
	scanf("%d %d",&a,&b);
	sum_diff(a,b,&s,&d);//调用函数计算和与差// 
	printf("两数之和为%d,两数之差为%d\n",s,d);
	swap(&a,&b);//调用函数交换数值// 
	printf("%d %d",a,b);
	return 0;
}

三、指针和数组

1.数组名原则上会被解释为指向该数组起始元素的指针

2.指针p指向数组中的元素e时

p+i为指向元素e后的第i个元素的指针,指向元素e后第i个元素的*(p+i)可以写成p【i】

p-i为指向元素e前的第i个元素的指针,指向元素e前第i个元素的*(p-i)可以写成p【-i】

3.指针p指向数组a的起始元素时a【0】时

a【i】,i【a】,*(a+i),*(i+a),p【i】,i【p】,*(p+i),*(i+p)表示的都是相同元素

即Type*型指针p指向Type型数组a的起始元素a【0】时,指针p的行为就和数组本身一样

4.函数间数组的传递是以指向第一个元素的指针的形式进行的。

5.数组名不能作为赋值运算符的左操作数

#include<stdio.h>
void swap(int *a,int *b)
{
	int t=*a;
	*a=*b;
	*b=t;
 } 
void bsort(int a[],int n)//冒泡排序进行升序// 
{
	int i,j;
	for(i=0;i<n-1;i++)
	{
		for(j=n-1;j>i;j--)
		{
			if(a[j]<a[j-1])
				swap(&a[j],&a[j-1]);
		}
	}	
}
int main()
{
	int score[1000];
	int n,i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&score[i]);
	} 
	bsort(score,n);
	for(i=0;i<n;i++)
	{
		printf("%d\n",score[i]);
	}
	return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值