下标要求数组或指针类型什么意思_C语言学习 指针(1)

例1 输入两个数a,b,按照大小顺序输出a和b

解析1(利用指针直接做)

#include<stdio.h>

int main()

{

float *p1,*p2,*p,a,b; //定义指针和变量,p1和p2的类型是float型

printf("please enter two number:")

scantf("%d,%d",&a,&b);

p1=&a; //使指针p1指向a

p2=&b; //使指针p2指向b

if(a<b)

{p=p1;p1=p2;p2=p;}。 引入p使得p1和p2的值互换

printf("Max=%d,min=%dn",*p1,*p2);

return 0;

}

注意:1,&是取值运算符,如上述第六行&a是变量a的地址

2,使指针运算符,如上述倒数第三行的*p1代表p指向的对象

即p=&a,意为指针变量p指向了整形变量a

*p1=1,表示将1赋给p所指变量a

解析2(利用函数求解)

#include<stdio.h>

int main()

{

void swap(float*p1,float*p2); //函数声明

float a,b;

float *x,*y; //定义两个指针变量

printf("please enter a and b:")

scantf("%d,%d",&a,&b);

x=&a;

y=&b;

if(a<b)

swap(x,y);

printf("max=%d,min=%dn",a,b);

return 0;

}

void swap(float *p1,float *p2). //定义函数swap

{float temp; //使p1和*p2的值互换

temp=*p1;

*p1=*p2;

*p2=temp;

}

注意:若出现多个数进行比较,可利用数组来进行解决

例2 有一个整形数组a,有10个元素,要求输出数组中的全部元素

解析1(下表法)

#include<stdio.h>

int main()

{

int a[10];

int i;

printf("please enter 10 numbers:")

if(i=0;i<10;i++)

scanf("%d",&a[i]);

if(i=0;i<10;i++)

printf("%dn",a[i]); //数组元素用数组和下标表示

return 0;

}

解析2(利用数组名计算数组元素地址,找出元素的值)

#include<stdio.h>

int main()

{

int a[10];

int i;

printf("please enter 10 numbers:")

if(i=0;i<10;i++)

scanf("%d",&a[i]);

if(i=0;i<10;i++)

printf("%dn",*(a+i)); //利用数组名和元素序号计算元素地址,从而计算该元素

return 0;

}

解析3(利用指针变量指向数组元素)

#include<stdio.h>

int main()

{

int a[10];

int I,*p;

printf("please enter 10 numbers:")

if(i=0;i<10;i++)

scanf("%d",&a[i]);

if(p=a;p<(a+10);p++)

printf("%dn",*p);

return 0;

}

其中第九行若写成if(i=0;i<10;i++,p++)的时候,结果会发生偏差,但是如果在上面补上一行p=a,即重新定义了一下p的值,那结果便不会发生偏差,原因在于前面的if语句使得p的值等于a[10],而致使结果出错。

注意:(p++)是先输出*p的值,在加1

而(++p)是先加1,再输出*p的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值