首页 > 其他分享 >指针数组与数组指针的区别及相关知识

指针数组与数组指针的区别及相关知识

时间:2024-01-03 21:33:08浏览次数:24  
标签:int 知识 数组名 parr 数组 printf 指针

区别:
指针数组:定义int*p[n] 可称为指针的数组,是数组,数组里的元素都是指针。也就是说数组存储的是指针,数组占多少字节由数组本身决定。

指针数组+1不同类型的变化如下

//eg:用指针parr指向一个一维数组
int main()
{
	int* parr[5] = {0,1,2,3,4};
	printf("%x\n",parr);//数组名代替首元素地址
	printf("%x\n",parr+1);//数组名+1在64位系统指针占8个字节,地址+8个字节
	printf("%x\n",parr+2);//+16

	printf("%x\n", *parr);//*数组名--代替首个元素
	printf("%x\n", *parr + 1);//*数组名+1在64位系统 int型占4个字节,元素大小类型大小
	printf("%x\n", *parr + 2);//8

	printf("%x\n", *(parr));//*(数组名)代替第0位置的元素
	printf("%x\n", *(parr + 1));//*(数组名+n)代替1的位置元素
	printf("%x\n", *(parr + 2));//*(数组名+n)代替2的位置元素
	return 0;
}
//eg:使用指针数组打印出I LOVE XYD
int main()
{
	char* p[3] = { { "I" },{ "LOVE" },{ "XYD" } };
	//数组中每个元素都存储的是指针
	for (int i = 0; i < 3; i++)
	{
		printf("%s ",p[i]);//p[i]存储的是每个数组中元素的首地址
	}
	return 0;
}
数组指针:定义int(*p)[N] 可称为数组的指针,是指针,首先它是一个指针,它指向一个数组,也就是说它是指向数组的指针,在32位系统下永远占4个字节,64位系统占8个字节,至于它指向的数组占多少字节,这不能确定,要看具体情况。
char(*p)[4] = ;//这里数组长度为4,所有元素均为int类型的指针
//eg:利用数组指针打印出I LOVE XYD
int main() 
{
	char arr[3][128] = {{"I"},{"LOVE"},{"XYD"}};
	char (*p)[128] = arr;
	for (int i = 0; i < 3; i++)
	{
		printf("%s ",*(p+i));//p是一个指针,此时指向的是二维数组里的第一行数组
		//*解引用后代表指向其中的元素
	}
	return 0;
}

标签:int,知识,数组名,parr,数组,printf,指针
From: https://blog.51cto.com/u_16425777/9089137

相关文章

  • Golang Defer 必会知识点
    Golang中的一个关键字,用于延迟执行指定的函数调用。在程序执行到defer语句时,该函数调用会被推迟到当前函数返回之前执行,无论当前函数是正常返回还是发生异常退出。Defer语句可以用来在函数执行完毕后清理资源,确保资源的释放不会被遗漏。通过使用defer,我们能够更好地管理和控......
  • 2024-01-03:用go语言,给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time, 分别表示
    2024-01-03:用go语言,给你两个长度为n下标从0开始的整数数组cost和time,分别表示给n堵不同的墙刷油漆需要的开销和时间。你有两名油漆匠,一位需要付费的油漆匠,刷第i堵墙需要花费time[i]单位的时间,开销为cost[i]单位的钱。一位免费的油漆匠,刷任意一堵墙的时间为1......
  • 稀疏数组
    问题介绍需求:编写五子棋游戏中,有存盘退出和续上盘的功能。 分析问题:因为二维数组的很多值是默认值0,因此记录了很多没有意义的数据。解决:稀疏数组概念当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方式是:记录数组一共有......
  • Redis基本知识与方法
    redis支持五种基本数据类型String(字符串)Hash(哈希)List(列表)Set(集合)Zset(有序集合)字符串(String):这是Redis最基本的数据类型,一个key对应一个value,且值的数据没有类型。Redis的字符串是二进制安全的,这意味着你可以存储任何类型的数据,比如jpg图片或者序列化的对象。哈希(Hash):哈希......
  • 片上网络相关知识总结
    什么是片上网络片上网络(On-ChipNetwork)是指在集成电路芯片上实现的一种通信网络结构,用于连接芯片上的各个功能模块、处理器核心、存储单元以及其他重要组件。随着芯片上集成度的提高和多核处理器的兴起,片上网络变得愈加重要,因为它在芯片内部提供了高效、低延迟的通信方式。以下......
  • 我敢说,这是你必会的网络端口知识
    下午好,我的网工朋友,新年快乐!端口是计算机网络技术中非常基础的概念,不管是网络实施、运维、还是软件开发,总是能听到端口二字。理论上来说,端口数最多可以有65535个。端口概念在网络技术中,端口(Port)大致有两种意义:一是物理意义上的端口,比如,ADSLModem、交换机、路由器用于连接其他网络......
  • 音视频编码基础知识
    视频编码指的是通过特定的压缩技术将一种视频格式文件转换成另一种视频格式文件的过程。常见的视频编码:MPEG类MPEG1(VCD等使用),MPEG2(DVD等使用),MPEG4(DivX,XviD是它的变体),MPEG4AVC等H.26x类H.261,H.262,H.263,H.263+,H.263++,H.264,H.265常见的音频编码:MPEGAudioLayer1/2,MPE......
  • 【C++】STL 容器 - stack 堆栈容器 ① ( stack 堆栈容器特点 | stack 堆栈容器与 dequ
    文章目录一、stack堆栈容器简介1、stack堆栈容器引入2、stack堆栈容器特点3、stack堆栈容器与deque双端数组容器对比二、代码示例-stack堆栈容器简单示例1、代码示例2、执行结果一、stack堆栈容器简介1、stack堆栈容器引入C++语言中的STL标准模板库中的stac......
  • Linux 静态链接和动态链接相关知识点总结
    staticlibrary和sharedlibrary的区别静态库(StaticLibrary)和共享库(SharedLibrary)是两种不同的库的形式,它们在链接和加载的方式上有一些关键的区别。静态库(StaticLibrary):文件格式:静态库的代码和数据在编译时被复制到程序的可执行文件中。文件扩展名:在大多数系统中,静态......
  • 数组指针的用法
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>//参数是数组形式voidprint1(intarr[3][5],intx,inty)//用数组形式接收,再接收传来的参数{ inti=0; intj=0; for(i=0;i<x;i++) { for(j=0;j<y;j++) { printf("%d",arr[i][j]);......