C语言学习之指针知识总结

yizhihongxing

C语言学习之指针知识总结

什么是指针?

指针是一个变量,其值为另一个变量的地址,即内存位置的直接地址(十六进制表示)。通俗来讲,指针就是一个保存地址的变量。

如何声明指针?

在C语言中,我们可以使用"*"来声明一个指针变量,例如:

int *p; // 声明一个指向int类型的指针变量

如何初始化指针?

在声明指针变量的时候,可以给它赋初始值,例如:

int a = 10;
int *p = &a; // 将p指向a的地址

如何使用指针?

  1. 取出指针所指向的变量的值

    c
    int a = 10;
    int *p = &a;
    printf("%d",*p); // 输出10

  2. 改变指针所指向的变量的值

    c
    int a = 10;
    int *p = &a;
    *p = 20;
    printf("%d",a); // 输出20

  3. 指针运算

    • 指针加法

      c
      int a[5] = {1,2,3,4,5};
      int *p = a;
      printf("%d", *(p + 2)); // 输出3

    • 指针减法

      c
      int a[5] = {1,2,3,4,5};
      int *p = a + 4;
      printf("%d", *(p - 2)); // 输出3

指针与数组

在C语言中,数组名的作用就是用来表示数组的首地址。因此,数组名可以被认为是一个指向数组首地址的常量指针。

举个例子:

int a[3] = {1,2,3};
int *p = a; // p指向数组a的首地址,即&a[0]

指针与函数

指针可以被用来传递函数参数,这样可以通过指针改变函数外的变量的值。这就是所谓的函数调用“按引用传参”。

举个例子:

void changeValue(int *p) {
    *p = 20;
}

int a = 10;
changeValue(&a);
printf("%d", a); // 输出20

示例1:指针数组

指针数组是一个数组,数组中的每个元素都是指针类型。

举个例子:

int a = 10;
int b = 20;
int *p[2] = {&a, &b}; // 声明一个指针数组,其中p[0]指向a,p[1]指向b
printf("%d", *p[0]); // 输出10
printf("%d", *p[1]); // 输出20

示例2:指向指针的指针

指向指针的指针被称为“多级指针”。

举个例子:

int a = 10;
int *p = &a;
int **q = &p; // q指向p的地址,即&q
printf("%d", **q); // 输出10

以上就是指针的一些基本知识点及使用方式的总结,希望能帮助大家理解指针在C语言中的重要性和应用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言学习之指针知识总结 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • java框架—>xstream的使用(一)

    Java框架—>XStream的使用(一) XStream是一个Java框架,用于将Java对象序列化为XML格式,并将XML反序列化为Java对象。以下是使用XStream的完整攻略: 步骤1:引入XStream 首先,需要在Java项目中引入XStream。可以使用以下Maven依赖项将XStream添加到项目中: <dependency…

    other 2023年5月9日
    00
  • git如何忽视本地修改

    Git如何忽视本地修改 在开发过程中,经常会因为项目的需要而修改代码,但是当我们执行git pull命令时,可能会遇到本地代码与远程代码产生冲突的情况,这时我们可能需要忽略本地的修改,直接使用最新的远程代码。下面就介绍一下Git如何忽视本地修改。 git reset 我们可以使用git reset命令来取消所有本地的修改。 git reset –hard …

    其他 2023年3月28日
    00
  • vue去除所有空格

    以下是关于“Vue去除所有空格”的完整攻略: 方法1:使用JavaScript的replace()方法 可以使用JavaScript的replace()方法来去除字符串中的所有空格。在Vue中,可以在模板中使用JavaScript表达式来调用该方法。 以下是示例代码: <template> <div> <p>{{ mess…

    other 2023年5月7日
    00
  • 鸿蒙开发人员选项怎么打开?鸿蒙进入开发者模式教程

    鸿蒙是华为推出的一款操作系统,为了方便开发者调试和开发,鸿蒙系统内置了开发者选项和开发者模式。下面详细介绍如何打开鸿蒙开发人员选项和进入开发者模式。 打开鸿蒙开发人员选项 首先打开手机的设置,向下滑动,找到“系统”选项,点击进入。 向下滑动,找到“关于手机”选项,点击进入。 在“关于手机”页面中,向下滑动,找到“版本号”这个选项,然后连续点击7次。 点击7次…

    other 2023年6月26日
    00
  • JS前端轻量fabric.js系列物体基类

    JS前端轻量fabric.js系列物体基类是一种用于在前端创建图形和动画的JavaScript库。它是基于HTML5 Canvas元素的,可以帮助前端开发人员轻松地创建各种图形和动画效果。本文主要介绍了fabric.js系列物体基类的使用和实现方法。 安装和使用 fabric.js是一个开源的JavaScript库,可以从Github下载。你可以使用npm或…

    other 2023年6月26日
    00
  • 条件数据库Android:sqllite的简单使用

    下面是“条件数据库Android:sqllite的简单使用”的完整攻略。 1. 前言 SQLite是一款功能强大的嵌入式关系型数据库,它被广泛应用在各个领域当中,而在Android中,SQLite是Android中的默认数据库,因此它也被广泛地应用在Android项目中。本篇文章将介绍在Android开发中如何使用SQLite数据库。 2. 实现SQLite…

    other 2023年6月26日
    00
  • oracle在线数据库使用livesql

    以下是关于“Oracle在线数据库使用LiveSQL”的完整攻略,包含两个示例。 Oracle在线数据库使用LiveSQL Oracle LiveSQL是一个在线的SQL开发环境,可以让开发人员轻松地写、测试和共享SQL代码。以下是关于如何使用 LiveSQL的详细攻略。 1. 创建账户 首先,我们需要创建一个Oracle账户,才能使用Oracle Live…

    other 2023年5月9日
    00
  • 9.利用msfvenom生成木马

    以下是利用msfvenom生成木马的攻略,包含两个示例: 什么是msfvenom? msfvenom是Metasploit框架中的一个工具,用于生成各种类型的恶意软件,包括木马、后门、漏洞利用等。它可以生成各种平台和架构的恶意软件,包括Windows、Linux、Mac OS X、Android等。 如何使用msfvenom生成木马? 要使用msfvenom…

    other 2023年5月6日
    00
合作推广
合作推广
分享本页
返回顶部