C语言基础------指针

本文深入探讨了C语言中的指针类型,指针用于存储数据的内存地址。文章介绍了取地址运算符'&'和取内容运算符'*'的用法,并通过示例展示了如何使用指针访问和修改数组元素。此外,还讨论了指针的比较和算术运算。文章以一个实际的代码示例说明了指针在实现选择排序中的应用。
摘要由CSDN通过智能技术生成

指针类型是C语言提供的一种特殊的基本数据类型。指针类型的变量中存放的不是待操作的数据,而是那些待操作数据的存储地址。

  • ‘&’ 被称为取地址运算符,只有输入字符串时,不需要使用运算符 &,因为数组名就是数组存储空间的首地址。定义一个指针型变量的语法格式是:<数据类型> * <指针型变量名>;
  • ‘*’ 与‘&’ 相反,它将返回指针型变量所指变量的内容,因此,又被称为取内容运算,如 *intptr = 30,*chptr = 'p';。
  • 基于指针的数据访问就是根据指针型变量中保存的存储地址来访问存储空间中的数据,只有把存储地址保存到指针变量之后,才有可能通过指针型变量来访问存储器中的数据。
  • 指针的比较就是地址的比较,指针的加减法就是地址和整数之间的运算,而乘法和除法对于地址运算是没有意义的。
  • 注意几个等价关系:例如,定义如下数组变量:int data[10];int *ptr;ptr=&data[0];,C语言规定数组名就是其首元素地址。
  • 存在如下等价关系:
  • data+idx,&data[idx],ptr+idx,&ptr[idx](地址关系);  data[idx],*(data+idx),ptr[idx],*(ptr+idx)(数据关系)。
#include<stdio.h> 
int main(){
	int *p,s[9]={1,2,3,4,5,6,7,8,9};
	for(int i=0;i<9;i++){
		printf("%5d",s[i]);
	}
	printf("\n");
	p=s;//等效于p=&s[0] 
	printf("%d\n",*p);
	*p=100;//等效于s[0]=100 
	*(p+1)=200;//等效于s[1]=200 
	for(int i=0;i<9;i++){
		printf("%5d",s[i]);
	}
	return 0;
}

运行结果如下: 

 

 

指针型实现选择排序: 

int *search(int key,int *plow,int *phigh){
	int *pmid;
	if(plow>phigh)
		return NULL;
	pmid=plow+(phigh-plow)/2;
	if(*pmid==key)
		return pmid;
	if(key<*pmid)
		return search(key,plow,pmid-1);
	else
		return search(key,plow+1,phigh);
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值