首页 > 代码库 > 想梳理一下指针

想梳理一下指针

(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++]*和++是同优先级,从右向左,算了,以后分不清顺序,就用括号

 

不早了,明天写

 

想梳理一下指针