C语言-指针(上)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


前言

本篇文章将为大家介绍C语言中的核心内容-指针,指针在C语言的中知识内容比较晦涩难懂,并且在实际运用中也被大量的使用。还有在深入学习编程中会学习的数据结构中,指针也是其相当重要的。所以,在C语言中指针是必不可少的。


提示:以下是本篇文章正文内容,下面案例可供参考

一、内存和地址

1.内存

内存像是排列整齐的房间,每个房间都可以用来存储数据,每个房间都有一个房间号来帮助我们找到对应的房间。

我们都知道计算机在进行数据处理时,数据都是要从内存中读取的,而计算机的内存由bit组成,每个位由2进制0或1组成。

为了更高效的管理内存,通常许多位合成一组作为一个单位这些位置的每一个都被称为字节(byte),

(一个byte=八个bite)每个字节都包含了存储一个字符所需要的位数。为了存储更大的值,我们把两个或更多个字节合在一起作为一个更大的内存单位。

注意

1.内存中的每个位置由一个独一无二的地址标识。
2.内存中的每个位置都包含一个值。

2.地址

在计算机语言中我们把内存单元的编号称为地址

我们可以根据这个地址取找到对应的数值。

所以,在C语言中可以将地址理解为指针

二、指针

1.指针变量

指针变量可以存放地址

代码如下(示例):

#include<stdio.h>
int mian()
{int a = 10;int* p =&a;            //p是指针变量-存放地址的变量return 0;     
}    

2.指针理解

#include<stdio.h>
int mian()
{
int a = 10;

int* p =&a; 

int* p = 20;
return 0;
}

 *  是说明p是指针变量,

int  是说明p指向的对象是int类型的

3.指针大小

指针大小取决于存放的地址所需空间的大小。

在32位编译器下:地址是32个0/1的二进制序列,存储起来需要32个bit位,指针变量的大小就是4个字节。

在64位编译器下:地址是64个0/1的二进制序列,存储起来需要64个bit位,指针变量的大小就是8个字节。

注意:

指针变量的大小和类型是无关的,只要指针类型的变量,在相同的下,大小都是相同的。

结论:指针类型决定了指针进行解引用操作的时候访问多大的空间。

三、 *

* 是解引用操作符或者间接访问操作符

*p 是解引用操作

#include<stdio.h>
int mian()
{

int a = 10;

int* p =&a; 

int* p = 20;

return 0;
}

此时,*p等价于a

四、const

const修饰指针变量,有两种情况:

1.const放在*左边

const修饰*p:

不能p来改变p指向的对象,但p可以指向其他对象。

#include<stdio.h>
int mian()
{

const int a = 10;

int b = 20;

const int * p =&a; 

 p = &b;  //√

*p = 20;  //×

return 0;
}

2.const放在*右边

const修饰p:

不能修改p本身的值,但p指向的内容可以通过p来改变。

#include<stdio.h>
int mian()
{

const int a = 10;

int b = 20;

 int * const p =&a; 

 p = &b;  //×

*p = 20;  //√

return 0;
}


总结

以上的内容为大家简单的介绍了指针的基本知识,希望大家对于指针的概念有了一个简单的了解,指针的内容较多且理解起来相对困难,希望大家继续坚持。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【文件管理】关于上传下载文件的设计

这里主要谈论的是产品设计里面的文件管理&#xff0c;比如文件的上传交互及背后影响到的前后端设计。 上传文件 场景&#xff1a;一条记录&#xff0c;比如个人信息&#xff0c;有姓名&#xff0c;出生年月&#xff0c;性别等一般的字段&#xff0c;还可以允许用户上传附件作为…

Java 小项目开发日记 04(文章接口的开发、oss图片上传)

Java 小项目开发日记 04&#xff08;文章接口的开发、oss图片上传&#xff09; 项目目录 配置文件&#xff08;pom.xml&#xff09; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sc…

机器学习:集成学习(Python)

一、Adaboost算法 1.1 Adaboost分类算法 adaboost_discrete_c.py import numpy as np import copy from ch4.decision_tree_C import DecisionTreeClassifierclass AdaBoostClassifier:"""adaboost分类算法&#xff1a;既可以做二分类、也可以做多分类&#…

python常用pandas函数nlargest 和 nsmallest及其手动实现

pandas是Python数据分析的重要工具之一&#xff0c;提供了大量便捷的数据操作方法。nlargest和nsmallest是pandas中两个非常实用的函数&#xff0c;它们可以帮助我们快速找出Series或DataFrame中最大或最小的n个值。 ### pandas中的nlargest和nsmallest函数 - nlargest(n, colu…

掌握Go语言:深入探究Go语言中的命令源码文件与参数处理技巧(3)

在Go语言学习的路上&#xff0c;掌握命令源码文件与参数处理技巧是至关重要的。本文将深入探讨命令源码文件的概念、作用以及参数处理的方法&#xff0c;同时结合进销存项目&#xff0c;展示实际应用与代码示例。 命令源码文件的概述 命令源码文件是Go语言程序的运行入口&…

uniapp的h5端在线预览文件

步骤如下&#xff1a; 1、下载需要准备的工具文件包 2、将其解压到/static/pdf文件夹下,如图&#xff1a; 3、创建在线查看文件的页面&#xff1a; <template><view><web-view :src"path"></web-view></view> </template>&l…

linux检测和重启python脚本

#!/bin/bash# 检测Flask应用是否挂了 if ! pgrep -f "flask_app.py" >/dev/null; then# 重启Flask应用cd /path/to/your/flask/appnohup python3 flask_app.py >/dev/null 2>&1 & fi这是一个简单的bash脚本&#xff0c;用于检测Flask应用是否挂掉&a…

JavaScript练手小技巧:一文看懂<script>标签的 ansyc 和 defer

<script>标签的 ansyc 和 defer 属性。只对外部加载 JS 文件有效。 <script src"js/app.js" async></script> <script src"js/app.js" defer></script> 普通加载 js&#xff08;同步加载&#xff09;&#xff1a;会打断 …

ES7、ES8、ES9、ES10、ES11、ES12 新特性汇总合集

在过去几年里&#xff0c;ECMAScript 标准不断更新&#xff0c;引入了许多令人激动的功能和改进。让我们来看看从 ES7 到 ES12 各个版本带来的重要变化&#xff1a; 1. ES7&#xff08;ECMAScript 2016&#xff09; 1. Array.prototype.includes 方法 Array.prototype.includ…

【字符串左旋右旋不会做?快来看看这篇“弹幕滚动”,你就有思路了!】

前言 不知道大家在做题时有没有遇到过“字符串旋转”的题目&#xff0c;很多人可能没有思路&#xff0c;这里我不具体讲解单一的题目&#xff0c;而是展现一个“弹幕滚动”的示例&#xff0c;相信大家看懂后就能做出“字符串旋转”的题了&#xff01; 技术名词解释 1.什么是“…

关于决策树模型

决策树模型是一种常用的数据挖掘方法&#xff0c;它通过模拟人类决策过程来对数据进行分类或回归分析。决策树由节点和边组成&#xff0c;其中每个内部节点代表一个属性上的测试&#xff0c;每个分支代表测试的一个结果&#xff0c;而每个叶节点&#xff08;树的末端&#xff0…

Vue3 isProxy,isReactive,isReadonly 三者解析

1、isProxy 作用&#xff1a;判断当前数据是否为代理数据。 注意&#xff1a;它只对通过 reactive&#xff0c;readonly&#xff0c;shallowReactive&#xff0c;shallowReadonly 这四个方法包裹的数据返回true&#xff0c;对于 ref 以及通过 new Proxy 代理的数据返回都是fal…

ChatGPT科研与AI绘图及论文高效写作教程

原文链接&#xff1a;ChatGPT科研与AI绘图及论文高效写作教程 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网和个人电…

HPE ProLiant MicroServer Gen8更换坏硬盘(RAID 1+0)

HPE ProLiant MicroServer Gen8今天硬盘告警&#xff0c;坏了一块硬盘&#xff08;估计还是由于上次突然断电导致的&#xff09;&#xff0c;关机&#xff0c;拆下坏硬盘&#xff0c;更换新硬盘&#xff0c;开机后按了一次F1键&#xff0c;系统继续启动并正常使用&#xff0c;同…

高性能MySQL 第4版

第一章MySQL架构 MySQL提供了多种锁的颗粒度&#xff0c;每种MySQL存储引擎都可以实现自己的锁策略和锁力度。 行级锁是在存储引擎而不是在服务器中实现的。 隔离界别 READ UNCOMMITTED - 脏读 在事务中可以可以查看到其他事务中还没有提交的修改。实际中很少用。 READ C…

Linux网络编程——socket 通信基础

Linux网络编程——socket 通信基础 1. socket 介绍2. 字节序2.1 简介2.2 字节序举例2.3 字节序转换函数 3. socket 地址3.1 通用 socket 地址3.2 专用 socket 地址 4. IP地址转换&#xff08;字符串ip -> 整数&#xff0c;主机、网络字节序的转换 &#xff09;5. TCP 通信流…

算法------(13)KMP

例题&#xff1a;&#xff08;1&#xff09;AcWing 831. KMP字符串 。。其实写完也不太理解。。随便写点吧 KMP就是求next数组和运用next的数组的过程。相比传统匹配模式一次更新一单位距离的慢速方法&#xff0c;next数组可以让下表字符串一次更新n - next【n】个距离&#x…

Java读取文件

读取文件为String 、访问链接直接跳转html 环境&#xff1a;SpringMVC 、前端jsp InputStreamReader FileInputStream fileInputStream new FileInputStream(formatFile.getHtmlpath());InputStreamReader reader new InputStreamReader(fileInputStream, StandardCharsets…

【EAI 026】RoboGen: 通过自动数据生成管线实现机器人技能学习

Paper Card 论文标题&#xff1a;RoboGen: Towards Unleashing Infinite Data for Automated Robot Learning via Generative Simulation 论文作者&#xff1a;Yufei Wang, Zhou Xian, Feng Chen, Tsun-Hsuan Wang, Yian Wang, Zackory Erickson, David Held, Chuang Gan 作者单…

C++:菱形继承问题

目录 1、什么是菱形继承 2、虚拟继承 3、一些常见问题 1. 什么是菱形继承&#xff1f;菱形继承的问题是什么&#xff1f; 2. 什么是菱形虚拟继承&#xff1f;如何解决数据冗余和二义性的 3. 继承和组合的区别&#xff1f;什么时候用继承&#xff1f;什么时候用组合&#…