大话C语言:第29篇 指针

1 指针概念

  • 指针:地址的变量化形式,其存储的是内存中某个存储单元的地址。它是地址的数值表示。

  • 指针变量:一种特殊的变量,它专门用于存放变量的地址(即指针)。

注意,指针和指针变量的区别:

  • 指针本身是一个地址,这个地址指向内存中的一个存储单元。它只是一个内存地址的抽象表示,没有存储空间来存储值,只是指向一个存储位置。

  • 指针变量则是一个变量,用于存储指针的值,即内存地址。指针变量有具体的存储空间,可以存储一个地址值。在程序中,可以通过操作指针变量来间接地访问和操作它所指向的内存地址中的数据。

2 指针变量的定义

语法格式:

类型 变量;
类型 * 指针变量 = &变量;

其中,

  • & 叫取地址,返回操作数的内存地

  • *叫解引用,指操作指针所指向的变量的值

  • 在定义变量时,* 号表示所声明的变量为指针类型。指针变量要保存某个变量的地址,指针变量的类型比这个变量的类型多一个*

  • 在指针使用时,* 号表示操作指针所指向的内存空间

注意,

  • 指针也是一种数据类型,指针变量也是一种变量

  • 指针变量指向谁,就把谁的地址赋值给指针变量

代码示例:

#include <stdio.h>

int main() 
{
    // 定义一个int类型的变量,同时赋值为10
    int a = 10;
    // 打印变量的地址
    printf("&a = %p\n", &a);
    // 定义一个指针变量,int *保存int的地址
    // int *代表是一种数据类型,int *指针类型,p才是变量名
    int* p;
    // 指针指向谁,就把谁的地址赋值给这个指针变量
    p = &a;
    // 打印p, *p, p指向了a的地址,*p就是a的值
    printf("p = %p, *p = %d\n", p, *p);

    return 0;
}

关于指针大小,可以通过,sizeof运算符获取,例如,

#include <stdio.h>

int main(int argc, char *argv[])
{
    char *p1;
    short int *p2;
    int *p3;
    long int *p4;
    float *p5;
    double *p6;
    
    printf("%d\n",sizeof(p1));
    printf("%d\n",sizeof(p2));
    printf("%d\n",sizeof(p3));
    printf("%d\n",sizeof(p4));
    printf("%d\n",sizeof(p5));
    printf("%d\n",sizeof(p6));
    
    return 0;
}

注意

  • 在 32 位系统下,所有类型的指针都是 4 个字节。

  • 在 64 位系统下,所有类型的指针都是 8个字节。

3 指针分类

按照其指向的数据类型分类,指针分类包括:

  • 字符指针,例如

// 定义了一个字符指针变量,只能存放字符型数据的地址编号
char ch;
char *p = &ch;
  • 短整型指针,例如

// 定义了一个短整型指针变量,只能存放短整型数据的地址编号
short num;
short *p = &num;
  • 整型指针,例如

// 定义了一个整型指针变量,只能存放整型数据的地址编号
int num;
int *p = &num;
  • 长整型指针,例如

// 定义了一个长整型指针变量,只能存放长整型数据的地址编号
long num;
long *p = &num;
  • 单精度浮点型指针,例如

// 定义了一个单精度浮点型指针变量,只能存放单精度浮点型数据的地址编号
float num;
float *p = &num;
  • 双精度浮点型指针,例如

// 定义了一个双精度浮点型指针变量,只能存放双精度浮点型数据的地址编号
double num;
double *p = &num;
  • 函数指针,例如

int add(int a, int b) 
{  
    return a + b;  
}

int (*func_ptr)(int, int);
  • 结构体指针,例如

// 定义结构体类型  
struct Student 
{  
    char name[50];  
    int age;  
    float score;  
};  
  
// 定义结构体指针  
struct Student *ptr;
  • 指针的指针,例如

// 定义一个整型指针  
int *ptr;      
// 定义一个指向整型指针的指针(二级指针)
int **pptr;     
  • 数组指针,例如

// 指向包含5个整数的数组的指针  
int (*int_array_ptr)[5]; 

// 指向任意长度双精度浮点数组的指针  
double (*double_array_ptr)[]; 

// 指向包含10个字符的数组的指针
char (*char_array_ptr)[10]; 
  • 通用指针,是一种特殊的指针类型,用void*来修饰。它可以指向任何类型的数据,包括结构体、数组、函数等,因此也被称为无类型指针。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/784891.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【后端开发】docker安装MySQL并做端口映射

1.拉取MySQL镜像 docker pull mysql但是中途可能出现连接超时的情况 可以使用; docker pull do.nark.eu.org/library/mysql用国内镜像去拉取可能会快很多 2.启动容器并做端口映射 因为MySQL是在docker里面的所以要从docker外面连接MySQL需要做端口映射 以下是端口映射的的命…

python爬虫加入进度条

安装tqdm和requests库 pip install tqdm -i https://pypi.tuna.tsinghua.edu.cn/simplepip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple带进度条下载 import time # 引入time模块&#xff0c;用于处理时间相关的功能 from tqdm import * # 从tqdm包中…

【Java】搜索引擎设计:信息搜索怎么避免大海捞针?

一、内容分析 我们准备开发一个针对全网内容的搜索引擎&#xff0c;产品名称为“Bingoo”。 Bingoo的主要技术挑战包括&#xff1a; 针对爬虫获取的海量数据&#xff0c;如何高效地进行数据管理&#xff1b;当用户输入搜索词的时候&#xff0c;如何快速查找包含搜索词的网页…

YOLOv10改进 | EIoU、SIoU、WIoU、DIoU、FocusIoU等二十余种损失函数

一、本文介绍 这篇文章介绍了YOLOv10的重大改进&#xff0c;特别是在损失函数方面的创新。它不仅包括了多种IoU损失函数的改进和变体&#xff0c;如SIoU、WIoU、GIoU、DIoU、EIOU、CIoU&#xff0c;还融合了“Focus”思想&#xff0c;创造了一系列新的损失函数。这些组合形式的…

深度解密Spark性能优化之道课程

课程通过实战案例解析和性能调优技巧的讲解&#xff0c;帮助学员提升大数据处理系统的性能和效率。课程内容涵盖了Spark性能调优的各个方面&#xff0c;包括内存管理、并行度设置、数据倾斜处理、Shuffle调优、资源配置等关键技术和策略。学员将通过实际案例的演示和分析&#…

Caterpillar on a Tree

首先一个很显然的地方就是使用传送门肯定是在叶子节点使用&#xff0c;我们来考虑一下整个过程是怎么样的 为了方便&#xff0c;我们不妨假设可以传送回根节点\(k1\)次&#xff0c;然后要求最后回到根节点 我们先从根节点走到某一个叶子结点&#xff0c;然后再从这个叶子节点走…

Open3D 计算点云的平均密度

目录 一、概述 1.1基于领域密度计算原理 1.2应用 二、代码实现 三、实现效果 2.1点云显示 2.2密度计算结果 一、概述 在点云处理中&#xff0c;点的密度通常表示为某个点周围一定区域内的点的数量。高密度区域表示点云较密集&#xff0c;低密度区域表示点云较稀疏。计算…

Kubernetes基于helm部署jenkins

Kubernetes基于helm安装jenkins jenkins支持war包、docker镜像、系统安装包、helm安装等。在Kubernetes上使用Helm安装Jenkins可以简化安装和管理Jenkins的过程。同时借助Kubernetes&#xff0c;jenkins可以实现工作节点的动态调用伸缩&#xff0c;更好的提高资源利用率。通过…

拆分pdf文件最简单的方法,pdf怎么拆成一页一张

在数字化的时代&#xff0c;pdf文件已经成为我们日常办公、学习不可或缺的文档格式。然而&#xff0c;有时候我们可能需要对一个大的pdf文件进行拆分&#xff0c;以方便管理和分享。那么&#xff0c;如何将一个pdf文件拆分成多个pdf呢&#xff1f;本文将为你推荐一种好用的拆分…

HNTs-g-PEG-CDs-Biotin NPs;碳量子点修饰接枝生物素化的羟基磷灰石纳米管

HNTs-g-PEG-CDs-Biotin NPs&#xff0c;即碳量子点修饰接枝生物素化的羟基磷灰石纳米管&#xff0c;是一种结合了多种先进材料特性的纳米复合材料。以下是对该材料的详细分析&#xff1a; 一、组成成分及特性 羟基磷灰石纳米管&#xff08;HNTs&#xff09;&#xff1a; 羟基磷…

多用户挂售转卖竞拍闪拍商城系统/NFT数藏系统/后端PHP+前端UNIAPP源码带教程(亲测源码)

挂售转卖竞拍商城系统源码/竞拍系统/转拍闪拍系统/后端PHP前端UNiapp源码 亲测可用 1、后台管理&#xff1a;系统管理员通过后台可以轻松添加商品进行挂单。这包括商品的详细信息&#xff0c;如名称、描述、价格、库存等。 商品展示&#xff1a;挂单后的商品会在商城前端进行…

22.状态机设计--可乐机设计(投币三元出一瓶可乐)

理论知识&#xff1a; &#xff08;1&#xff09;状态机简写为FSM&#xff08;Finite State Machine&#xff09;&#xff0c;也称为同步有限状态机。同步是指状态的变化都是在时钟的边沿发送变化&#xff0c;有限值得是状态的个数是可数的。 &#xff08;2&#xff09;分类&…

Xilinx FPGA DDR4 接口的 PCB 准则

目录 1. 简介 1.1 FPGA-MIG 与 DDR4 介绍 1.2 DDR4 信号介绍 1.2.1 Clock Signals 1.2.2 Address and Command Signals 1.2.3 Address and Command Signals 1.2.4 Data Signals 1.2.5 Other Signals 2. 通用存储器布线准则 3. Xilinx FPGA-MIG 的 PCB 准则 3.1 引脚…

ElasticSearch第一天

学习目标&#xff1a; 能够理解ElasticSearch的作用能够安装ElasticSearch服务能够理解ElasticSearch的相关概念能够使用Postman发送Restful请求操作ElasticSearch能够理解分词器的作用能够使用ElasticSearch集成IK分词器能够完成es集群搭建 第一章 ElasticSearch简介 1.1 什么…

【Unity2D 2022:】制作NPC

一、创建NPC角色 1. 创建JambiNPC并同时创建Jambi站立动画 &#xff08;1&#xff09;点击第一张图片&#xff0c;按住shift不松&#xff0c;再选中后两张图片&#xff0c;拖到层级面板中 &#xff08;2&#xff09;将动画资源文件保存到Animation Clips文件夹中 &#xff08;…

YOLOv10改进 | 损失函数篇 | InnerIoU、InnerSIoU、InnerWIoU、FocusIoU等损失函数

一、本文介绍 本文给大家带来的是YOLOv10最新改进&#xff0c;为大家带来最近新提出的InnerIoU的内容同时用Inner的思想结合SIoU、WIoU、GIoU、DIoU、EIOU、CIoU等损失函数&#xff0c;形成 InnerIoU、InnerSIoU、InnerWIoU、等新版本损失函数&#xff0c;同时还结合了Focus和…

PHP源码:线上书店系统(附管理后台+前台)

一. 前言 今天小编给大家带来了一款可学习&#xff0c;可商用的&#xff0c;线上书店 源码&#xff0c;支持二开&#xff0c;无加密。项目的内容是销售书籍&#xff0c;可以扩展成pdf&#xff0c;文档等一些虚拟产品的销售。 详细界面和功能见下面视频演示。 二. 视频演示 线…

一个php文件怎么实现联系表单自动发送邮件

学习PHP&#xff1a;如何编写一个自动发送邮件的联系表单处理器&#xff1f; 无论是反馈意见、业务咨询&#xff0c;还是技术支持&#xff0c;联系表单都能为用户提供便捷的交流途径。AokSend将探讨如何通过一个PHP文件实现联系表单的自动发送邮件功能。 php文件&#xff1a;…

【豆包AI】北京春田知韵

看到有国内AI上线了&#xff0c;网络信息那么多&#xff0c;我该怎么找它的官网呢&#xff1f; 找官方网站3步 1百度 关于抖音豆包的网站是哪个?【www.doubao.com】 豆包属于哪个公司&#xff1f;【北京春田知韵科技有限公司】 www.doubao.com 2查询备案号 PC版本的安装…

外卖跑腿小程序APP软件成品系统和软甲开发APP小程序可进行封装打包

&#xff0c;用户友好界面设计 首先&#xff0c;外卖施限小程序APP应具备用户友好的界面设计。界面应简洁明了&#xff0c;让用户能够方便快捷地议,览和选择所需的菜品或服务。系统应提供详细的菜品描述、价格透明&#xff0c;并允许用户根据口味、偏好进行结进和排序。此外&am…