想梳理一下指针
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++]*和++是同优先级,从右向左,算了,以后分不清顺序,就用括号
不早了,明天写
以上是关于想梳理一下指针的主要内容,如果未能解决你的问题,请参考以下文章