1.max min
指针变量的定义 说明 和 赋值
#include<stdio.h>
int main()
{
int *z1,*z2,*z,a,b;//*z1,指针变量z1,存储地址
scanf("%d%d",&a,&b);
z1=&a;//指针变量赋值.z1是指针变量*z1的变量名
z2=&b;//&b,返回变量b的地址.&是取地址运算符,单目运算符,返回操作数地址
if(a<b)
{
z=z1;
z1=z2;
z2=z;
}
printf("a=%d,b=%d\n",a,b);
printf("max=%d,min=%d\n",*z1,*z2);
//*是指针运算符,单目运算符.返回指针变量存储的地址中对应的变量的值
}
start without debugging
2.max min
指针变量做函数参数
source file 1
#include<stdio.h>
int main()
{
int *z1,*z2,a,b;
int swap(int *z1,int *z2);
scanf("%d%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
z1=&a;
z2=&b;
if(a<b)
{
swap(z1,z2);
}
printf("max=%d,min=%d\n",*z1,*z2);
}
source file 2
#include<stdio.h>
//指针变量做函数参数
int swap(int *z1,int *z2)
{
int *z;
z=z1;
z1=z2;
z2=z;
}
3.三数排序
#include<stdio.h>
int main()
{
int a,b,c,*p1,*p2,*p3;
void exchange(int *q1,int *q2,int *q3);
scanf("%d%d%d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
exchange(p1,p2,p3);
printf("%d<%d<%d",a,b,c);
}
void exchange(int *q1,int *q2,int *q3)//三值排序,*q3>*q2>*q1
{
void swap(int *pt1,int *pt2);
if(*q1<*q2)
swap(q1,q2);
if(*q1<*q3)
swap(q1,q3);
if(*q2<*q3)
swap(q2,q3);
}
void swap(int *pt1,int *pt2)//双值互换
{
int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
start without debugging
4.一维数组与指针
C语言:一维数组与指针.2021-05-21_慕容雪羽-CSDN博客
5.易错
#include<stdio.h>
int main()
{
char* p,q;
printf("%d %d \n",sizeof(p),sizeof(q));
}
只有p是地址
地址赋值
#include<stdio.h>
int main()
{
int a[] = {5, 15, 34, 54, 14, 2, 52, 72};
int *p = &a[5];
printf("%d \n",p[-2]);//易错
printf("%d %d \n",p[0],a[5]);
}