C语言 指针方法?

Python017

C语言 指针方法?,第1张

#include<stdio.h>

int main()

{

int a,b,c,s[3],t

int *x,*y,*z//定义指针变量

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所在内存空间的起始地址)