第二周:指针

本文详细介绍了指针的基本概念,包括定义、初始化及使用准则,并通过实例演示了如何利用指针进行变量交换和数组排序,深入浅出地解析了指针在实际编程中的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:指针的定义
🔖指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元

1变量的地址:变量在内存中所占存储空间的地址
2变量的值:变量在存储空间存放的的数据

🔖定义形式: 类型关键字 *指针变量名;
( *为指针运算符/间接寻址运算符/解引用运算符)
作用:访问指针变量指向的变量的值。

e.g: int *s是指向整型变量的指针变量
     float *d是指向浮点变量的指针变量.
     char *g;是指向字符变量的指针变量

注❌:一个指针变量只能指向同类型的变量
注❌:从概念上,变量的指针并不等同于变量的地址

二:指针的初始化
目的:防止指针乱指一气,习惯上在定义时同时将其初始化为NULL
NULL:在stdio.h中定义为零值得宏
e.g: int *pa = NULL;
或者:

 int *pa;
 pa=&a;//初始化指针变量pa,使其指向a

等价于

int *pa = &a;

三:三个准则
(1):永远清楚每个指针指向了哪里,指针必须指向一块有意义的内存
(2):永远清楚每个指针指向的对象的内容是什么
(3):永远不要使用未初始化的指针变量

四:按值调用和模拟按引用调用
按值调用:程序将函数调用中的一些实参的一份副本传给函数的形参。
模拟按引用调用:程序将函数调用中的一些实参的地址传给函数的形参。
在这里插入图片描述
五:指针的应用

交换两个数的值

int swap(int *x,int *y){
   int temp;
   temp=*x;
   *x=*y;
   *y=temp;
   }

调用指针指向的函数实现对数组a的交换法排序

void SelectSort(int a[],int n,int (*compare)(int a,int b)){
    int i,j,k;
    for(i=0;i<n-1;i++{
    	k=i;
    	for(j=i+1;j<n;j++){
    		if((*compare)(int a[j],a[k]))  k=j;
    	}
    	if(k!=i)  swap(&a[k],&a[i]);
    }
}

升序

SelectSort(score,n,Ascending);//升序
int Ascending(int a,int b){
	reeturn  a<b;
}

降序

SelectSort(score,n,Descending);//降序
int Descending(int a,int b){
	reeturn  a>b;
}

注❌:*compare两边的括号不能去掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安然907

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值