指针数组与数组指针的区别

news2025/3/1 16:06:10

文章目录

  • 一、指针概念
  • 二、指针
    • 1.0、字符指针
    • 2.0、指针数组与数组指针
  • 总结


一、指针概念

  • 内存会划分为一个个内存单元,指针是内存中一个最小单元的编号,也就是地址。
  • 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量。
  • 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。
  • 指针的大小是固定的4/8个字节(32位平台/64位平台)。
  • 指针是有类型,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限。 指针的运算。
    指针需要存储到变量中,被称为指针变量。

指针大小的理解指针的大小是固定4/8字节32位平台/64位平台)是由物理的32/64根电线产生,由32/64个0-1组成的二进制序列作为地址,需要32/64个bit位才能存储这些地址(因为8个bit位为一个字节所以指针的大小才是4/8个字节

总结:数组名 == 地址 ==指针


二、指针

1.0、字符指针

字符指针的基本运用

int main()
{
	//ch初始化
    char ch = 'a';
    //把ch地址取放到*pc
    char *pc = &ch;
    //解引用pc可以修改ch,因为pc存放着有ch的地址
    *pc = 'b';
	
	//const限制*p修改,存放在代码区是不能被修改
	const char *p="abcdf";
	//%s,因为数组在内存中是连续存放的,只要给了p的地址,就会依次打印整个数组
	printf("%s\n",p);
	//打印首字符
	printf("%c\n",*p);
    return 0;
}

在这里插入图片描述

练习:

#include <stdio.h>
int main()
{
	//str1,str2数组都是独立的内存空间,所以是false
    char str1[] = "hello bit.";
    char str2[] = "hello bit.";
    //*str3,str4常量字符串不允许被修改,只要是相同的常量字符串,在内存中只需要创建一块内存空间,因为地址相同所以是true
    const char *str3 = "hello bit.";
    const char *str4 = "hello bit.";
    if(str1 ==str2)
		 printf("str1 and str2 are same\n");
    else
		 printf("str1 and str2 are not same\n");
      
    if(str3 ==str4)
		 printf("str3 and str4 are same\n");
    else
		 printf("str3 and str4 are not same\n");
      
    return 0;
}

2.0、指针数组与数组指针

区分指针数组与数组指针的方法,还是得看优先级()>[ ]>*,
(*p)[n]:根据优先级,先看括号内,则p是一个指针,这个指针指向一个一维数组,数组长度为n,这是“数组的指针”,数组指针就是指向数组的指针;
*p[n]:根据优先级,先看[],则p是一个数组,再结合 *,这个数组的元素是指针类型,共n个元素,这是“指针的数组”,指针数组是存放指针的数组。

总结:先看优先级区分,数组指针就是指向数组的指针,指针数组是存放指针的数组。

数组指针的基本运用

//用指针模拟二维数组
#include<stdio.h>

//传过来的二维数组,需要用数组指针接收
void Print(int(*p)[5], int r, int c)
{
	int i = 0;
	for (i = 0; i < r; i++)
	{
		int j = 0;
		for (j = 0; j < c; j++)
		{
			//指针的结合主要还是看优先级,从左往右,()高于*所以先是第一个大括号,内部也是同理,区别就是同一优先级从左往右先(p+i)然后解引用在到+j
			printf("%d ", *(*(p + i) + j));
		}
		printf("\n");
	}
}
int main()
{
	int arr[3][5] = { 1,2,3,4,5,2,3,4,5,6,3,4,5,6,7 };
	
	Print(arr, 3, 5);

	return 0;

指针数组

int main()
{
	int a = 1;
	int b = 2;
	int* p1= &a;
	int* p2= &b;
	int* p[2] = { p1,p2 };

	printf("%p\n", p[0]); //a的地址
	printf("%p\n", &a); //a的地址
	printf("%p\n", p[1]); //b的地址
	printf("%p\n", &b); //b的地址
	printf("%d\n", *p[0]); //*p[0]相对应的下标的元素
	printf("%d\n", *p[1]); //*p[1]相对应的下标的元素
	return 0;
}


总结

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

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

相关文章

漏洞发现-API接口服务之漏洞探针类型利用修复(45)

这里能探针到开放的端口&#xff0c;可以判断出端口的所属类型&#xff0c;这里涉及到证明检测&#xff0c;然后是证明利用可以对端口进行攻击&#xff0c; 端口服务开发这个端口&#xff0c;可以对这个端口进行攻击的。 apl接口&#xff0c; 主要针对应用上面的接口&#xff…

C++斩题录|递归专题 | leetcode50. Pow(x, n)

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

Autojs 小游戏实践-神农百草园

概述 最近一直再写刷视频软件脚本&#xff0c;比如手机视频软件太多&#xff0c;每天都需要手动提现羊毛&#xff0c;太累&#xff0c;使用使用Autojs来帮助我提现&#xff0c;签到&#xff0c;扯远了&#xff0c;因为做刷视频脚本感觉有点无聊&#xff0c;所以试着做小游戏找…

机器学习---决策树分类代码

1. 计算数据集的香农熵 from numpy import * import numpy as np import pandas as pd from math import log import operator #计算数据集的香农熵 def calcShannonEnt(dataSet): numEntrieslen(dataSet) labelCounts{} #给所有可能分类创建字典 for featVec …

SimpleCG绘图函数(10)--基础参数属性设置函数

在前面的绘画过程中,我们已经使用过设置线条颜色等函数。本篇我们来系统讲解绘图属性的设置函数。 一、边框线条参数属性 //设置当前设备线条颜色。 COLORREF setlinecolor( COLORREF nColor ); //设置当前设备线条宽度。 int setlinewidth( int nWidth ); //设置当前设备线条…

安卓绘制原理之 那些年遇到的requestLayout埋下的坑

需要了解的知识&#xff1a;安卓绘制原理概览_油炸板蓝根的博客-CSDN博客 对于调用过requestLayout的View&#xff0c;PFLAG_FORCE_LAYOUT标记在requestLayout之后&#xff0c;onLayou完成之前都是一直存在的&#xff1b;对于ViewGroup而言&#xff0c;layout children都是在on…

Linux ipc通信(消息对列)

前言&#xff1a;消息队列也是linux开发ipc机制中较为重要的一个进程间通信机制。 1.系统创建或获取消息对列 int msgget(key_t key, int mode); 创建消息队列&#xff0c;或者获取消息队列。 参数&#xff1a; key - 使用ftok()获取到的key mode - IPC_CREAT|0666 返回&…

级联H桥储能变流器仿真

1.单个H桥模块的工作状态 2.仿真模型 3.仿真结果 3.1逆变电压网侧电压网侧电流 3.2功率跟踪情况 3.3电流跟踪情况 3.4电池SOC变化曲线 3.5相内SOC均衡效果 3.6相间SOC均衡效果 3.7最大零序电压注入与均衡速度 欢迎同行技术交流&#xff0c;联系方式见置顶文章的底部

NLP(4)--BERT

目录 一、自监督学习 二、BERT的两个问题 三、GLUE 四、BERT与Transformer的关系 五、BERT的训练方式 六、BERT的四个例子 1、语句分类&#xff08;情感分析&#xff09; 2、词性标注 3、立场分析 4、问答系统 七、BERT的后续 1、为什么预训练后的微调可以满足多…

408-2011

一、选择题&#xff08;2分/题&#xff09; 1.设 n 是描述问题规模的非负整数&#xff0c;下列程序片段的时间复杂度是______。 x2; while(x<n/2){x2*x; } A.O() B.O(n) C.O() D.O(n^2) 解答&#xff1a;A 假设执行 y次&#xff0c;则 (2^y)*xn/2,y&a…

艺术与AI:科技与艺术的完美融合

文章目录 艺术创作的新工具生成艺术艺术与数据 AI与互动艺术虚拟现实&#xff08;VR&#xff09;与增强现实&#xff08;AR&#xff09;机器学习与互动性 艺术与AI的伦理问题结语 &#x1f389;欢迎来到AIGC人工智能专栏~艺术与AI&#xff1a;科技与艺术的完美融合 ☆* o(≧▽≦…

机器学习笔记之最优化理论与方法(十)无约束优化问题——共轭梯度法背景介绍

机器学习笔记之最优化理论与方法——共轭梯度法背景介绍 引言背景&#xff1a;共轭梯度法线性共轭梯度法共轭方向共轭VS正交共轭方向法共轭方向法的几何解释 引言 本节将介绍共轭梯度法&#xff0c;并重点介绍共轭方向法的逻辑与几何意义。 背景&#xff1a;共轭梯度法 关于…

VAN LKA、LSKA

Visual Attention Network 2022 大核注意力机制LKA 在本文中&#xff0c;提出了一种新的大核注意力large kernal attention&#xff08;LKA&#xff09;模型&#xff0c; LKA吸收了卷积和自注意的优点&#xff0c;包括局部结构信息、长程依赖性和适应性。同时&#xff0c;避免…

【结合AOP与ReflectUtil对返回数据进行个性化填充展示】

结合AOP与ReflectUtil对返回数据进行个性化填充展示 背景 对于接口列表返回的数据&#xff0c;我们通常有时候会对某些特殊的字段进行转化&#xff0c;或者根据某逻辑进行重新赋值&#xff0c;举个例子&#xff0c; 比如返回的列表数据中有性别sex&#xff0c;我们通常会同时…

柏林噪声 (PERLIN NOISE)

简介 柏林噪声旨在描述自然中的随机效果&#xff0c;它创建的纹理可以直接运用于顶点着色器&#xff0c;而不是生成一张纹理图&#xff0c;然后用传统的纹理映射技术把贴图附加到一个三维物体上。 这也就相当于&#xff0c;纹理将不需要适应表面&#xff0c;我们只需要提供每个…

【算法训练-链表 七】【排序】:链表排序、链表的奇偶重排、重排链表

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【链表的排序】&#xff0c;使用【链表】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&am…

【LeetCode每日一题合集】2023.9.4-2023.9.10(⭐二叉树的重建二分答案拓扑排序)

文章目录 449. 序列化和反序列化二叉搜索树⭐⭐⭐⭐⭐&#xff08;二叉树的重建&#xff09;解法相关题目——297. 二叉树的序列化与反序列化⭐⭐⭐⭐⭐解法——深度优先搜索 2605. 从两个数字数组里生成最小数字哈希表分情况讨论位运算表示集合&#xff0c;分情况讨论&#x1…

Day60|单调栈part03:84.柱状图中最大的矩形

柱状图中最大的矩形 leetcode链接&#xff1a;力扣题目链接 视频链接&#xff1a;单调栈&#xff0c;又一次经典来袭&#xff01; LeetCode&#xff1a;84.柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;…

【多线程】线程安全的单例模式

线程安全的单例模式 饿汉模式懒汉模式单线程版多线程版多线程版(改进) 单例模式能保证某个类在程序中只存在 唯一 一份实例, 而不会创建出多个实例&#xff0c;从而节约了资源并实现数据共享。 比如 JDBC 中的 DataSource 实例就只需要一个. 单例模式具体的实现方式, 分成 “饿…

Unity3D URP 仿蜘蛛侠风格化BloomAO

Unity3D URP 仿蜘蛛侠风格化Bloom&AO BloomBloom效果流程&#xff1a;制作控制面板VolumeComponent.CSCustom Renderer FeatherCustom Renderer PassBloom ShaderComposite Shader 完善Custom Feather风格化AO 总结 本篇文章介绍在URP中如何进行风格化后处理&#xff0c;使…