首页 > 其他分享 >数组名的含义 以及数组指针和指针数组

数组名的含义 以及数组指针和指针数组

时间:2023-05-28 10:36:15浏览次数:51  
标签:10 arr int 数组名 数组 printf 指针

一、数组名

数组名在大多数情况下表示为数组首元素的地址,但有两个例外

1.sizeof可用来计算数组所占字节数,sizeof(arr)中的数组arr代表整个数组


2.&arr,此时数组arr代表整个数组的地址

整个数组的地址和数组首元素的地址有什么区别?

假如有int arr[10],数组地址和首元素地址相同,但数组地址+1间隔40个字节,数组首元素地址+1间隔4个字节

int main() {
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };	
	printf("%p\n", arr);
	printf("%p\n", &arr);

	printf("给两个指针各自加1\n");

	printf("%p\n", arr+1);
	printf("%p\n", &arr+1);
	return 0;
}

数组名的含义 以及数组指针和指针数组_指针数组

如果我们想存放这个间隔40字节的数组的指针就要用到“数组指针”

二、数组指针

数组指针本质上是指针,用于存放整个数组的指针,用int(*p)[10]表示

int main() {
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };	
	int(*p)[10] = &arr;
	printf("%p\n", p);   \\008FF9A4
	printf("%p", p+1);   \\008FF9CC
	return 0;
}

三、指针数组

指针数组本质上是数组,是用来存放指针的数组,用int* arr[10]表示

int main() {
	int a = 1;
	int b = 2;
	int c = 3;
	int* arr[3] = { &a,&b,&c };
	printf(" % p % p % p", arr[0], arr[1], arr[2]); //008FF818 008FF80C 008FF800
	return 0;
}


标签:10,arr,int,数组名,数组,printf,指针
From: https://blog.51cto.com/u_16102535/6364826

相关文章

  • 1-10的数组,按指定的个数,依次取,计算每次取到的数组
    第一种方法,改变数组的方法<?php$kaochang=[1,2,3,4,5,6,7,8,9,10];$kaodian=[2,3,2,3];$temp=[];foreach($kaodianas$k=>$v){ $newkaochang=array_splice($kaochang,$v); $remove=array_diff($kaochang,$newkaochang); $kaochang=$newkaochang; $temp[$k]=$remo......
  • C语言编程—数组
    C语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。数组的声明并不是声明一个个单独的变量,比如runoob0、runoob1、...、runoob99,而是声明一个数组变量,比如runoob,然后使用runoob[0]、runoob......
  • 朱迪(二位数组)
    #include<iostream>#include<string>#include"minecraft.h"#include"Windows.h"usingnamespacestd;TxMinecraftmc;stringx,y,z;stringid,data;intmain(){boolcon=mc.ConnectMinecraft("zk","919b005......
  • SA后缀数组学习笔记
    什么是后缀数组后缀数组主要是用来处理字符串的,分为两种方法:倍增法以及DC3,但由于倍增法通俗易懂,码量小,常数小,所以今天这篇文章我就只介绍倍增法(不可能是因为我不会DC3)前缀知识No.1基数排序跟桶排序差不了多少,思想就是:将整数按位数切割成不同的数字,然后按每个位数分别比较。......
  • 【cplusplus教程翻译】指针(Pointers)
    在前面的章节中,变量被解释为计算机内存中的位置,可以通过其标识符(名称)访问这些位置。这样,程序就不需要关心内存中数据的物理地址;只要需要引用变量,它就简单地使用标识符。对于C++程序来说,计算机的内存就像一系列的存储单元,每个存储单元的大小都是一个字节,并且每个存储单元都有一个......
  • 学习日记——跳出循环和数组
    1.break跳出循环①定义:循环结构中遇到break语句,将会跳出其所在的循环,执行该循环后的第一条语句②结构:breakinti=1;switch(i){case1:System.out.println("星期一");break;case2:System.out.println("星期二");break;}......
  • php二维数组中将有交集的并在一起
    1、需求将下方数组$arr格式化为[[A,B,C,D,E,F],[X,Y,Z]]2、编码$arr=[['A','B'],['A','C'],['A','D'],['C','E'],['D','F'],['X�......
  • 多维数组
    inti;    //i变量的类型是int,即一个i变量的占4字节的内存空间charc;//c变量的类型是char,即一个c变量占一个字节的内存空间intai[5];//ai变量的类型是int[5](也就是说int[5]是一种数组的类型),即一个ai变量占20个字节的内存空间 二维数组:typename[N1][N2];//数组的......
  • php如何输出二维数组,PHP中以不同形式的输出遍历二维数组 方法
    $arr=array(array("101","李军","男","1976-02-20","95033"),array("103","陆君","男","1974-06-03","95031"),array("105","匡明","男","......
  • 数组指针、二级指针传参
    voidtest(int**p){}//二级指针接受intmain(){ inta=0; int*p=&a; int**pp=&p; int*arr[10]={0}; test(pp);//二级指针传参 test(&p);//一级指针的地址 test(arr);//指针数组,存放指针地址的数组 return0;}//voidtest(intarr[][5])//{}//arr[][]arr[3][]错误......