#include<stdio.h>
int main()
{
int a,b,c,s[3],t
x=&a//将a的地址赋给指针x,下同
y=&b
z=&c
scanf("%d%d%d",x,y,z)
s[0]=*x//将指针x所指向的变量值赋给数组s的第一个元素依次类推
s[1]=*y
s[2]=*z
for(int i=0i<3i++)//冒泡排序
for(int j=0j<3-i-1j++)
if(s[j]<s[j+1])
{
t=s[j]
s[j]=s[j+1]
s[j+1]=t
}
for(int i=0i<3i++)
printf("%d ",s[i])
return 0
}
——————————————————————————
#include<stdio.h>
void input(int *a)
{
int *p=a//将数组a的首地址赋给指针p
for(int i=0i<10i++)
scanf("%d",&p[i])//指针下标法输入
}
int max_min(int *a)
{
int *p=a//将数组a的首地址赋给指针p
int max,min,x=0,y=0,t
max=min=p[0]
for(int i=0i<10i++)
{
if(p[i]>=max)
{
max=p[i]
x=i
}
if(p[i]<=min)
{
min=p[i]
y=i
}
}
t=p[y]
p[y]=p[0]
p[0]=t
t=p[9]
p[9]=p[x]
p[x]=t
}
void output(int *a)
{
int *p=a//将数组a的首地址赋给指针p
for(int i=0i<10i++)
printf("%d ",p[i])//指针下标法输出
}
int main()
{
int a[11]
input(a)//调用函数,下同
max_min(a)
output(a)
return 0
}
(1)指针变量定义的格式:
类型标识符 *变量名; 如:int *point
注意:在定义int point的时候 ,加粗部分的 不是取值符,而是修饰point是一个指针变量,如何确定point指向什么类型的变量呢,需要进行下一步:看非加粗部分,int则表示point指向int类型变量或保存int类型变量的地址。
(2)指针变量的初始化,先来看个实例:
说明:
表示该变量的类型是一个指针变量,指针变量名是p1而不是 p1;
如果在同一行定义多个指针变量应该是:int *p1, *p2;而不是int p1, p2或者 int p1, p2;
给指针变量初始化有两种方式:
在定义时初始化,如int *p_2 = &b
先定义再初始化,如int *p1p1 = &a
*p1是p1所指向的变量的值;
一个指针变量只能指向同一个类型的变量。
(3)对于指针变量的两个运算符“*”与“&”:
&取地址运算符 //&a就代表a的地址(指的是a所在内存空间的起始地址)