来自刚刚进入打卡工作的落后者的博客——10

好长时间没往下学习了,要继续了,刷题真心没意思呀…
话不多说,捞干的来!

关于指针 03

这里面讲的基本都是对以前忘了的知识进行复习了。
讲一下我这几天复习的指针的用法

1、指针指向变量:
使用指针能够访问变量的储存单元,所以,使用指针能够改变主调函数的变量的值,例如,下面的代码:

#include <stdio.h>
void f(int *a);
int main ()
{
	int i=20;
	int *p;
	
	p=&i;   
	printf ("%d\n",*p);
	f(&i);
	printf ("%d\n",i);

	return 0;
} 
void f(int *a)
{
	*a*=10; 
}

这里面有几点要说明:
1、指针变量需要进行赋值,并且赋的值是一个变量的地址。
2、这里面还用指针把i转换了,因为输入的是i的地址,所以,在自定义函数中就改变了i的值。指针的作用之一:用指针改变主调函数中的值。

2、指针指向数组:
例如下面的代码:

#include <stdio.h>
void f(int *a);
int main ()
{
	int a[2]={1,23};
	int *p;
	
	p=a;
	
	printf ("%d\n",*p);
	f(a);
	return 0;
} 
void f(int *a)
{
	printf ("%d",a[1]);
}

在上面的程序里面,还是有几点要强调:
1、因为数组的名就是地址,所以在给指针变量赋值的时候不用取址符
2、与此同时输入自定义函数的时候也是不需要取址符
3、数组的名就是数组的地址,把数组的地址赋值给指针变量,指针变量代表的就是数组的第一个元素。所以代码里面主函数输出的值就是a【0】=1;
4、当把数组的名输入进自定义函数的时候,数组内所有的元素都进去了,所以数组内的所有元素在自定义函数内都能正常使用!(这只是我的猜想!)

指针的应用场景:

应用场景一:两个数值的交换(only一个例子,还有很多例子呢!)

#include <stdio.h>
void f(int *x,int *y);
int main ()
{
	int a=10;
	int b=20;
	
	printf ("%d %d\n",a,b);
	f(&a,&b);
	printf ("%d %d",a,b); 
	return 0;
} 
void f(int *x,int *y)
{
	int i=*x;
	
	*x=*y;
	*y=i;
}

1、先开始是输出10 20 之后引用f()函数,在自定义函数里面将两个数值交换 则,输出的就是20 10了(要是以往,自定义函数和主函数没有啥太大关系,但是,输入地址…都懂了吧!)
2、在运算时,用指针的形式进行运算,就相当于变量进行运算。

应用场景二:通过指针返回值(除法运算)

#include <stdio.h>
int f(int x,int y,float *result);
int main ()
{
	int a;
	int b;
	float result=0;
	
	scanf ("%d %d",&a,&b);
	
	if (f(a,b,&result))
	{
		printf ("result=%.2f",result);
	}
	return 0;
} 
int f(int x,int y,float *result)
{
	int isprime=1;
	if (y==0)
	{
		isprime=0;
	}
	else 
	{
		*result=x*1.0/y;
	}
	return isprime;
}

哎呀,这个程序还真不太会,但是总算打出来了,这里面生动的把指针活用了起来
1、用return返回状态,当y!=0时证明合理,返回值是1,if(1)就是正确并且可行;当y==0时,证明不合理,if(0)不能运行,直接退出。
2、用指针带回计算结果,引用函数的时候,顺便把result的值也改变了,so,输出的就是result=(x/y的值)。

这篇文章就是对以前知识的复习,毕竟,温故而知新,写了之后也是有所收获!加油!继续努力!

扫描二维码关注公众号,回复: 5618135 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_43073128/article/details/83033923