想梳理一下指针

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了想梳理一下指针相关的知识,希望对你有一定的参考价值。

(1)运用函数求a,b的最大值并按大到小的顺序输出

int MAX(int a,int b,int *p,int *q)

{

p=&a;//要在主函数中写,原因不清楚。。。反正在这里写答案就说错的,改到主函数就对了,而且只能定义一处主函数或调用函数

q=&b;

if(a<b)

{

int c=a;//反正*p就是a,这不是标准的但是是对的

*p=b;

*q=c;

}

return a;

}

#include <stdio.h>

int main()

{

int MAX(int a,int b,int *p,int *q)

int a,b;

int *P,*q;//应该是int *p=a,*q=b;

max(a,b,p,q);

scanf("%d%d",&a,&d);

printf("%d\\n",a);

printf("%d %d",a,b);

return 0;

}

错误代码,改正://

注意:定义时时*p,调用的时候用p;

int *p=&a==int *p; p=&q;

改良版:

技术分享

如果改成全局变量:

技术分享

貌似我吧调用函数放在前面就不行了,还有全局变量最好首字母大写;

突然想起了#define IP 3.14

(2)指针和一维数组

1.a[5]输出

#include <stdio.h>

int main ()

{

int a[5]={0,1,2,3,4};

int *p=a;//注意和前面的区别 int *p=&a;是定义指针p,p为地址,地址就是&a;但真正应该是int *p;int p=&a;但是这里,a代表了a[5]的首地址

for(;p<a+5;p++)

printf("%d",*p);

}

想要输入加输出

技术分享

不知道怎么不对,呜呜呜

我回来改错了

技术分享

要注意指针变量的当前值前面一个已经加到了a+5

改了以下,这样是正确的

貌似也只见到了这个种

技术分享

 典型错误

技术分享

 a是常数不能++;p是变量

改良

技术分享

p++;*p  == *p++ ==*(p++)==a[i++]*和++是同优先级,从右向左,算了,以后分不清顺序,就用括号

 

不早了,明天写

 

以上是关于想梳理一下指针的主要内容,如果未能解决你的问题,请参考以下文章

指针知识梳理8- 指针的指针

指针知识梳理9-指针数组

指针知识梳理3-指针作为參数

指针指针变量梳理,取地址与取值运算

指针和数组小记

安卓强弱指针分析与测试