【C语言】指针定义及在数组中的应用(详细版)

本文详细介绍了C语言中的指针,包括指针的定义、指针变量的声明与引用,以及如何通过指针引用数组。文章通过实例演示了如何定义、赋值和使用指针变量,特别讨论了指针在数组操作中的应用,如数组元素的指针、指针运算以及用数组名作为函数参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        继前面函数的结束,这篇文章我们开始指针的讲解,代码均来自VS环境下。

目录

一、什么是指针

二、指针变量

1.怎样定义指针变量

2.怎样引用指针变量

3.指针变量作为函数参数

 三、通过指针引用数组

1.数组元素的指针

2.在引用数组元素时指针的运算

3.通过指针引用数组元素

4.用数组名做函数参数


一、什么是指针

        由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。打个比方,一个房间的门口挂了一个房间号2008,这个2008就是房间的地址,或者说,2008“指向”该房间。因此,将地址形象化地称为“指针”,意思是通过它能找到以它为地址的内存单元。 

注意:

  1. 对变量的访问都是通过地址进行的。
  2. 直接按变量名进行的访问,称为“直接访问”方式。
  3. 另一种称为“间接访问”的方式,即将变量i的地址存放在另一变量中,然后通过该变量来找到变量i的地址,从而访问i变量。

注意:区分“指针”和“指针变量”这两个概念。例如,可以说变量i的指针是2000,而不能说i的指针变量是2000。指针是一个地址,而指针变量是存放地址的变量。 指针变量的值是指针!

二、指针变量

1.怎样定义指针变量

定义指针变量的一般形式为:

类型名 * 指针变量名

如:

int *pointer_1, *pointer_2;

        左端的int是在定义指针变量时必须指定的“基类型”。指针变量的基类型用来指定此指针变量可以指向的变量的类型。例如,上面定义的、基类型为int的指针变量pointer_1和pointer_2,可以用来指向整型的变量i和j,但不能指向浮点型变量a和 b。

注意: 

在定义指针变量时必须指定基类型。有的读者认为既然指针变量是存放地址的,那么只须指定其为“指针型变量”即可,为什么还要指定基类型呢?要知道不同类型的数据在内存中所占的字节数和存放方式是不同的。

        一个变量的指针的含义包括两个方面,一是以存储单元编号表示的纯地址(如编号为2000 的字节),一是它指向的存储单元的数据类型(如int,char,float等)。

2.怎样引用指针变量

在引用指针变量时,可能有3种情况:

(1)给指针变量赋值。如:

p=&a;   //把a的地址赋给指针变量p

指针变量p的值是变量a的地址,p指向a。

(2)引用指针变量指向的变量。

 如果已执行“p=&a;”,即指针变量p指向了整型变量a,则printf("%d",*p);其作用是以整数形式输出指针变量p所指向的变量的值,即变量a的值。如果有以下赋值语句:*p=1;

表示将整数1赋给p当前所指向的变量,如果p指向变量a则相当于把1赋给a,即“a=1;”。

(3)引用指针变量的值。如:

printf("%o",p);

作用是以八进制数形式输出指针变量p的值,如果p指向了a就是输出了a的地址,即&a。

【例1】输入a和b两个整数,按先大后小的顺序输出a和b。

#include<stdio.h>
int main()
{ 
    int *pl,*p2,*p,a,b;
    printf("please enter two integer numbers:");
    scanf("%d,%d",&a,&b);
    pl=&a;
    p2=&b;
    if(a<b)
    {
        p=pl;
        pl=p2;
        p2=p;
    }
    printf("a=%d,b=%d\n",a,b);
    printf("max=%d,min=%d\n",*pl,*p2);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_star_galaxy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值