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

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日

相关文章

  • 创建、调用JavaScript对象的方法集锦

    以下是使用标准的Markdown格式文本,详细讲解创建和调用JavaScript对象的方法集锦的完整攻略: 创建、调用JavaScript对象的方法集锦 1. 使用对象字面量创建对象 对象字面量是一种简洁的方式来创建JavaScript对象。以下是一个示例: const person = { name: ‘John’, age: 30, greet: fun…

    other 2023年10月14日
    00
  • SpringBoot 配置文件加密的步骤

    SpringBoot 配置文件加密可以保护敏感的配置信息,比如数据库密码等,防止被恶意获取。下面是一些可能用到的步骤。 安装 JCE JCE(Java Cryptography Extension)是Java加密扩展的缩写,如果你需要使用高强度加密算法,比如AES,那么需要下载安装对应的JCE版本。在Oracle官网下载后,将jar包解压到 $JAVA_HO…

    other 2023年6月25日
    00
  • Java非递归实现删除任意目录的方法

    我来为你讲解Java非递归实现删除任意目录的方法的完整攻略。 1.使用Java的File类 Java中提供了File类,可以用于处理文件、文件夹等对象。在使用该类时,需要注意以下几个要点: 删除文件可以直接使用File对象调用delete()方法,而删除目录则需要递归删除它下面的所有子目录和文件; 在递归删除过程中,需要使用非递归的方式,避免由于文件夹层级太…

    other 2023年6月27日
    00
  • git分支的创建和切换

    当我们在进行软件开发时,通常需要在同一个代码库中进行多个开发和测试。Git分支是一个非常有用的功能,它允许我们在一个代码库中创建多个分支,以便在不影响主分支的情况下进行开发和测试。本文将详细介绍如何在Git中创建和切换分支,并提供两个示例说明。 创建分支 在Git中,我们可以使用git branch命令创建一个新分支。以下是创建一个名为feature的新分支…

    other 2023年5月7日
    00
  • vue中使用elementui实现树组件tree右键增删改功能

    Vue中使用ElementUI实现树组件Tree右键增删改功能,需要以下步骤: 安装ElementUI 在项目中使用ElementUI,需要先安装ElementUI库。可以使用npm安装,具体命令为: npm install element-ui –save 引入ElementUI 在Vue项目中引入ElementUI,需要在main.js中加入以下代码:…

    other 2023年6月27日
    00
  • Handler与Android多线程详解

    Handler与Android多线程详解 在Android开发中,由于应用需要和UI交互,我们通常需要使用多线程来控制任务的执行。而在多线程的场景下,我们经常会用到Handler这个类。Handler可以使我们在不同线程之间进行通信。 Handler概述 Handler是Android的一个类,用于异步线程之间的消息更改。通常情况下,Handler是响应Me…

    other 2023年6月27日
    00
  • insertinto语句的基本用法

    insertinto语句的基本用法 当我们需要在数据库中新增一条记录时,需要使用到insertinto语句。这个语句的基本用法如下: INSERT INTO 表名 (字段1, 字段2, …) VALUES (值1, 值2, …); 其中,INSERT INTO表名表示向哪个表中插入数据,字段1、字段2等表示要插入的字段名称,VALUES后面跟着的是对…

    其他 2023年3月29日
    00
  • JavaScript创建对象的方式小结(4种方式)

    JavaScript创建对象的方式小结 在JavaScript中,有多种方式可以创建对象。以下是四种常见的方式: 1. 使用对象字面量 对象字面量是一种简单直接的方式,通过使用花括号 {} 来定义对象,并在其中添加属性和方法。 示例代码: const person = { name: ‘John’, age: 25, sayHello: function()…

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