8

逍遥自在学C语言 | 指针的基础用法 - 知微之见

 1 year ago
source link: https://www.cnblogs.com/Wayne123/p/17485911.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在C语言中,指针是一项重要的概念,它允许我们直接访问和操作内存地址。

可以说,指针是C语言一大优势。用得好,你写程序如同赵子龙百万军中取上将首级;用得不好,则各种问题层出不穷,有种双拳难敌四手的感觉。

本文将介绍指针的基础知识,包括指针的定义、初始化、访问和运算。

一、人物简介

  • 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。
1511464-20230606224237924-1818889158.gif
  • 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。
1511464-20230606224258922-622567244.gif

二、指针的基本概念

指针是一种变量,它存储的是内存地址而不是实际的值。

通过指针,我们可以直接访问和操作内存中存储的数据。下面是指针的基本概念:

int* ptr;  // 声明一个指向整数的指针

在上面的示例中,我们声明了一个名为ptr的指针变量,它可以指向整数类型的数据。

指针变量的类型必须与其指向的数据类型相匹配。

三、声明和初始化指针

要声明指针变量,我们需要使用*符号来指示该变量是一个指针。下面是指针的声明和初始化示例:

int* ptr;    // 声明一个指向整数的指针
int num = 10;  // 声明一个整数变量

ptr = #  // 将指针指向num变量的地址

在上面的示例中,我们声明了一个指向整数的指针ptr,然后将其初始化为变量num的地址,使用&运算符可以获取变量的地址。

四、访问指针和间接引用

通过指针,我们可以访问和修改其指向的变量。使用指针访问变量的值称为间接引用或解引用操作。

下面是访问指针和解引用的示例:

int* ptr;
int num = 10;

ptr = #

printf("变量num的值:%d\n", *ptr);  // 输出:变量num的值:10

*ptr = 20;  // 修改变量num的值

printf("变量num的新值:%d\n", num);  // 输出:变量num的新值:20

在上面的示例中,我们使用*ptr来访问指针所指向的变量num的值,并可以对其进行修改。

五、指针的运算

指针支持一些特定的运算,使得我们能够在内存中进行定位和遍历。

以下是指针的常见运算:

  • 指针的自增和自减运算:使用自增和自减运算符可以将指针移动到下一个或上一个内存位置。
int* ptr;
int nums[] = {1, 2, 3, 4, 5};

ptr = nums;  // 指针指向数组的第一个元素

printf("第一个元素的值:%d\n", *ptr);  // 输出:第一个元素的值:1

ptr++;  // 指针自增,移动到下一个元素

printf("第二个元素的值:%d\n", *ptr);  // 输出:第二个元素的值:2
  • 指针之间的相减运算:可以对两个指针进行相减运算,得到它们之间的距离(以元素个数为单位)。
int* ptr1;
int* ptr2;
int nums[] = {1, 2, 3, 4, 5};

ptr1 = nums;       // 指针1指向数组的第一个元素
ptr2 = &nums[3];   // 指针2指向数组的第四个元素

int distance = ptr2 - ptr1;

printf("两个指针之间的距离:%d\n", distance);  // 输出:两个指针之间的距离:3

通过以上示例,我们可以看到指针的自增、自减和相减运算的应用,它们在遍历数组和计算距离等场景中非常有用。

六、示例代码

下面是完整的示例代码,用于加深对指针的理解,巩固前面所学的知识:

#include <stdio.h>

int main() {
    int num = 10;
    int* ptr = &num;

    printf("变量num的值:%d\n", *ptr);
    *ptr = 20;
    printf("变量num的新值:%d\n", num);

    int nums[] = {1, 2, 3, 4, 5};
    int* p = nums;
    printf("第一个元素的值:%d\n", *p);
    p++;
    printf("第二个元素的值:%d\n", *p);

    int* p1 = nums;
    int* p2 = &nums[3];
    int dist = p2 - p1;
    printf("两个指针之间的距离:%d\n", dist);

    return 0;
}

通过这篇文章,我们学会了

1、指针的基本概念

2、指针的基本用法

📢欢迎各位 👍点赞 ⭐收藏 📝评论,如有错误请留言指正,非常感谢!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK