C语言之指针运算符、指针变量及其定义、指针的使用

目录

一、指针运算符

1、&运算符

2、*运算符

二、指针变量及其定义

1、指针变量

2、定义指针变量

三、指针的使用


指针,是C语言中的一个重要概念,也是掌握C语言比较困难的部分。指针也就是内存地址,可对存储数据的变量地址进行操作,不同类型的指针变量所占用的存储单元长度是不相同的。下面主要讲述了指针运算符,指针变量及其定义,以及指针的使用。

一、指针运算符

1、&运算符

&运算符,是单目运算符,表示取地址,即获得地址的变量,它的操作数必须是变量。例如:int i; printf("%p",&i); 表示输出i的地址。

&可以取变量的地址、相邻变量的地址、数组的地址、数组单元的地址、相邻数组单元的地址,但不能对没有地址的东西取地址。

2、*运算符

*是一个单目运算符,用来访问指针的值所表示的地址上的变量,可以做右值也可以做左值(出现在赋值号左边的不是变量,而是表达式计算的结果,是一个特殊的值,称之为左值)。例如:int k=*p; *p=k+1。

指针运算符&和*互为反作用。

二、指针变量及其定义

1、指针变量

指针变量是存放内存地址的变量,不同于其他类型变量,它是专门用来存放地址的,也称为地址变量。在C语言中,指针通常指的是指针变量。

2、定义指针变量

定义指针变量的一般形式为:类型说明符 *变量名;其中类型说明符表示指针所指向变量的数据类型,* 表示这是一个指针变量,变量名表示定义的一个指针变量名,它的值是具有实际值的变量的地址。例如:int i;int *p=&i; 表示p是一个指针,它的值是变量i的地址,通常称为p指向i。

三、指针的使用

1、交换两个变量的值

void swap(int *pa,int *pb)
{
    int t=*pa;
    *pa=*pb;
    *pb=t;
}


2、函数返回多个值,某些值就只能通过指针返回,传入的参数实际上是需要保存带回的结果的变量。如:求数组中的最大值与最小值,如下:

​
#include<stdio.h>
void minmax(int a[],int len,int *min,int *max);
int main()
{
	int a[]={1,3,34,56,12,34,58,90,55};
	int min,max;
	minmax(a,sizeof(a)/sizeof(a[0]),&min,&max);
	printf("min=%d,max=%d",min,max);
	return 0;
}
	
void minmax(int a[],int len,int *min,int *max)
{
	int i;
	*min=*max=a[0];
	for(i=0;i<len;i++)
	{
		if(a[i]<*min)
		{
			*min=a[i];
		}
		if(a[i]>*max)
		{
			*max=a[i];
		}
	}
}

​


3、函数返回运算的状态,结果通过指针返回。常用的套路是让函数返回特殊的不属于有效范围内的值来表示出错(-1或0),但是当任何数值都是有效的可能结果是,就得分开返回了。

#include<stdio.h>
int divide(int a,int b,int *result);
int main()
{
	int a=5,b=2,c;
	if(divide(a,b,&c))
		printf("%d/%d=%d\n",a,b,c);
	return 0;
}

int divide(int a,int b,int *result)
{
	int ret=1;
	if(b==0)
		ret=0;
	else
		*result=a/b;
	return ret;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

朝 颜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值