C语言指针详解(上)

news/2024/5/9 13:22:10

一.什么是指针

指针是一种类型,用来存储变量的地址的类型

有哪些类型呢

字符指针:char*

整型指针:int*

浮点型指针:float*

双精度浮点型指针:double*

空指针:void*

(每一个类型的指针,都指定存储该类型变量的地址)(void*后面在讲解)

比如说:

int a=0;//创建一个int整型变量
int* p=&a;//创建了一个int*类型的指针变量,可以存储int类型的地址
printf("%p",p)://打印a的地址(打印地址是%p)

我们看别人代码的时候,别人可能是这样写指针变量的:

int a=0;//创建一个int整型变量
int *p=&a;//这种形式

发现这俩总主要是*号在哪,下面这种方式用的人最多,但是原本的写法是上面这种,但是这两种写法都一样,只是形式上的不同

(上面我们对指针有了简单的了解,指针就是存储变量地址的变量)

二.怎样通过地址来访问变量

我们来看这个例子

通过*号来访问地址对应的值,和直接打印变量的值是一样的;

通过地址来改变变量的值也是可以的。

三.指针类型的大小

既然指针存的是地址,那么地址的大小肯定是一样的,我们来看一下(在64位环境下):

果然不出所料,他们的大小都一样,那么,为什么要分这么多呢

四.指针的加减

当我们对指针进行加减的时候,看例子:

int*类型加一,地址增加了4

char*类型加一,地址增加了1

我们又知道int类型大小为4,char类型大小为1

所以我们得知不同类型的指针变量,加减可以跳过不同的距离,加一次可以跳过该类型的字节数

五.数组和指针

我们知道数组在内存中的存储是连续的

我们就用一个p指针来慢慢遍历这个数组,因为数组在内存是连续的,指针加减在内存也是连续

这里有一个小细节,数组名其实就是首元素的地址,所以,我们可以这样操作

未完待续。。。


http://www.mrgr.cn/p/17484544

相关文章

ubuntu没有有线网络的一种解决办法

直接使用下面的代码: sudo nmcli networking off sudo nmcli networking on转自 Ubuntu 20.04 LTS 有线网络设置消失了怎么办 - 知乎 (zhihu.com) 评论区第一条 理客Lick - 知乎 (zhihu.com)Keep it simple and stupid

Huawei设备基础配置

<Huawei>system-view # 进入系统视图 [Huawei]telnet server enable # 开启设备telnet功能 [Huawei]user-interface vty 0 4 # 开启登录端口0-4并进入用户接口视图 [Huawei-ui-vty0-4]protocol inbound telnet # 通过telnet协议登录 [Huawei-ui-vty0-4]authentic…

如何安装和卸载SFP光模块

SFP光模块的安装和拆卸是简单直接的过程。然而&#xff0c;任何非标准操作都可能导致隐式损坏甚至永久故障。您需要参考及时更新的光模块的数据表或用户手册&#xff0c;以熟悉其特性和锁定机制。 准备工作 常见事项 拆卸和插入SFP光模块可能会缩短其使用寿命&#xff0c;因…

Git工具的详细使用

一、环境说明 [rootgit ~]# getenforce Disabled [rootgit ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (d…

Selenium浏览器自动化测试框架详解

selenium简介 介绍 Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Google C…

【转】linux设置密钥登录(只允许密钥登录)

转, 原文: https://www.cnblogs.com/dyj--php/p/9656016.html ----------------- 一.root用户使用这条命令看看家目录有没有(.ssh文件夹),cd .ssh,如果存在就会进入这个文件夹,不存在就(makedir .ssh),修改.ssh这个文件夹权限(chmod 700 .ssh),查看.ssh文件夹下是…

嵌入式作业2.1 汇编练习

目录原始参考代码(main.s)作业一、翻译汇编成C语言二、修改参考代码 原始参考代码(main.s) 汇编代码: //===================================================================== //文件名称:main.s //功能概要:汇编编程调用GPIO构件控制小灯闪烁(利用printf输出提示信…

window10 安装 Redis

一、下载压缩包(免安装) 地址: https://github.com/tporadowski/redis/releases二、解压解压路径自定义 Logs目录,手动添加的,用于保存redis的日志记录 (下面再补充)下图为解压后的文件三、注册Redis服务以管理员权限打开cmd窗口,执行以下命令# 安装redis服务 redis-se…

Camera基础知识四

MIPI-CSI2的PHY层定义了CSI传输介质的电气特性、帧格式以及时钟等,如下:DPHY Lane States:Escape Mode跟csi无关,是DSI用的LP切换到HS模式切换:差分信号一般100mv - 300mv HS_SETTLE,这段时间,1.2V降到100-300mv需要时间稳定下来。HS_ZERO表示发送为0。 一旦MIPITX发送0…

Spring Cloud 十:Spring Cloud与微前端

Spring Cloud 一&#xff1a;Spring Cloud 简介 Spring Cloud 二&#xff1a;核心组件解析 Spring Cloud 三&#xff1a;API网关深入探索与实战应用 Spring Cloud 四&#xff1a;微服务治理与安全 Spring Cloud 五&#xff1a;Spring Cloud与持续集成/持续部署&#xff08;CI/C…

Fiddler(6)AutoResponder

Fiddler最实用的功能, 它可以抓取在线页面保存到本地进行调试, 大大减少了在线调试的困难, 可以让我们修改服务器端返回的数据的

WinRadius 配置指南

WinRadius 配置指南 1 RADIUS概述 RADIUS 是一种用于在需要认证其链接的网络访问服务器(NAS)和共享认证服务器之间进行认证、授权和记帐信息的文档协议。 RADIUS在运维审计系统中,主要体现的是认证功能。 2 设置WinRadius服务器的操作步骤 (1)运行WinRadius。在真实计算机…

Camera基础知识三

参考资料:极客笔记 侵权联删Camera sensor状态机:状态机:POWER OFF、hardware standby、software、streaming 没电的时候就是power off状态,上电了进入hardware standby状态,xshutdown也就是reset,进入software standby状态。PLL寄存器配置进去之后就进入streaming状态Ca…

C语言例4-15:从键盘输入一个整数,求其绝对值并输出。

代码如下&#xff1a; //从键盘输入一个整数&#xff0c;求其绝对值并输出。 #include<stdio.h> int main(void) {int n;printf("输出一个整数&#xff1a; \n");scanf("%d",&n); //从键盘输入一个整数保存至变量nif(n<0) //…

Linux相关命令(1)

1、找出文件夹下包含 “aaa” 同时不包含 “bbb”的文件&#xff0c;然后把他们重新生成一下。要求只能用一行命令。 find ./ -type f -name "*aaa*" ! -name "*bbb*" -exec touch {} \;文件系统操作命令 df&#xff1a;列出文件系统的整体磁盘使用情况 …

Linux更换默认终端

在更换不同版本的gcc/g++时,提到了update-alternatives这个默认程序,这里同样要用。 下载完终端以后, sudo update-alternatives --config x-terminal-emulator然后运行即可

C语言:文件操作解析

在本文的开篇&#xff0c;我们要探讨为什么要使用文件&#xff1f;我们写的程序的数据是存储在电脑的内存中的&#xff0c;没有文件&#xff0c;如果程序退出&#xff0c;内存收回&#xff0c;数据就会丢失&#xff0c;等再次运行程序的时候&#xff0c;上次程序中的数据就找不…

运行.sh脚本文件

linux中.sh文件是脚本文件(shell脚本) 它可以将不同的命令组合起来,并按确定的顺序自动连续地执行。脚本文件是文本文件,用户可使用文本编辑器来创建脚本文件。 eg. 我利用vim 编写了如下内容: echo 我来了 echo 我走了 echo 这是test.shecho 是一个 Shell 内建命令 ,用来…

第1章 Hive基本概念

1.1 什么是Hivehive简介Hive:由facebook开源用于解决海量结构化日志的数据统计工具。 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL的查询功能。 2) Hive本质:将HQL转化成MapReduce程序。3) Hive的三个要点:Hive处理的数据存储在…