int main() {
int a[]; //
int *pa = new int[]; //
int b[][]; //
int *c[]; //
int (*d)[]; //
int **e; //
int **f[]; //
int **g[][]; //
cout << sizeof(a) << endl;
cout << sizeof(pa) << endl;
cout << sizeof(b) << endl;
cout << sizeof(c) << endl;
cout << sizeof(d) << endl;
cout << sizeof(e) << endl;
cout << sizeof(f) << endl;
cout << sizeof(g) << endl;
return ;
}

辨析:

1、int a[3] 和 int *pa = new int[3] 的区别:

  sizeof 是一个运算符,不是函数,所以是在编译的时候确定大小的。对于确定长度的数组,sizeof 的值为数组长度*类型字节,而对于指针,sizeof 的值由机器字长决定。

2、int *c[4] 和 int (*d)[4] 的区别:

  以上定义涉及两个运算符:“*”(引用)、“[]”(下标),“[]”的优先级大于“*”的优先级。

  int *c[4]:“[]”的优先级高,所以它首先是个长度为 4 的数组,即 c[4];剩下的 int * 作为补充,说明该数组的每一个元素为指向一个 int 类型的指针。因此它是一个指针数组。

 int main() {
int a = ;
int b[] = {, };
int *c[] = {&a, b};
cout << *c[] << endl;
cout << c[][] << " " << c[][] << endl;
return ;
}

输出结果

1

2 3

  int (*d)[4]:(*d) 表明它首先是个指针;剩下的 int [4] 作为补充,说明指针 d 指向一个长度为 4 的数组。因此它是一个指向一维数组的指针。

 int main() {
int a[][] = { , , , , , , , };
int (*d)[];
d = &a[]; // a[0]、a[1]都是长度为4的一维数组,这里写 d = a; 或 d = a + 1; 语法上也正确
for (int i = ; i < ; i++) {
for (int j = ; j < ; j++) {
cout << (*(d + i))[j] << " "; // 括号不能少
}
cout << endl;
}
return ;
}

输出结果

1 2 3 4

5 6 7 8

3、不论是一级指针还是二级指针,都占 4 字节。

以上

【C/C++】数组 & 指针的更多相关文章

  1. C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用

    类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...

  2. 问题:C++ 删除数组指针实用 delete []变量 汇编怎么实现的?

    问题:C++ 删除数组指针实用  delete []变量    汇编怎么实现的?

  3. 指针数组 vs 数组指针

        指针数组,故名思义,就是指针的数组,数组的元素是指针:     数组指针,同样,就是直想数组的指针.     简单举例说明:     int *p[2]; 首先声明了一个数组,数组的元素是in ...

  4. c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针

    1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...

  5. C/C++中的指针数组和数组指针

    1. 指针数组 定义:int *p[n],由于[]的优先级高于*,p和[]结合成一个数组,该数组的元素存储的是int类型的指针,由于数组内容是指针,因此p+1的步长是sizeof(int*),在32位 ...

  6. C++中,指针数组和数组指针

    这俩兄弟长得实在太像,以至于经常让人混淆.然而细心领会和甄别就会发现它们大有不同. 前者是指针数组,后者是指向数组的指针.更详细地说. 前: 指针数组;是一个元素全为指针的数组. 后: 数组指针;可以 ...

  7. C语言 数组类型与数组指针类型

    //数组类型与数组指针类型 #include<stdio.h> #include<stdlib.h> #include<string.h> void main(){ ...

  8. delphi动态数组指针问题

    就一个button事件 procedure TForm1.btn7Click(Sender: TObject); Type TMyArr = array of array of array of In ...

  9. delphi 数组类型与数组指针的巧妙利用

    {本例通过存取结构, 慢慢引入了数组类型与指针的一些使用方法; 其中六个小例子的测试内容和结果都是一样的. ---------------------------------------------- ...

  10. PHP中使用数组指针函数操作数组示例

    数组的内部指针是数组内部的组织机制,指向一个数组中的某个元素.默认是指向数组中第一个元素通过移动或改变指针的位置,可以访问数组中的任意元素.对于数组指针的控制PHP提供了以下几个内建函数可以利用. ★ ...

随机推荐

  1. Spring Boot 2.x中的management.security.enabled=false无效问题

    look: https://blog.csdn.net/qq_27385301/article/details/82899303

  2. idea的mybatis的mysql语句的小数转换百分号

    其实mysql的小数转换百分数有两种函数ROUND和TRUNCATE 例子: 1.round(x,d) :用于数据的四舍五入,round(x)  ,其实就是round(x,0),也就是默认d为0: 这 ...

  3. Linux防火墙iptables基础详解

    原文来自于:https://www.linuxidc.com/Linux/2017-01/140073.htm(引用自) 一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分 ...

  4. pandas的基本功能(一)

    第16天pandas的基本功能(一) 灵活的二进制操作 体现在2个方面 支持一维和二维之间的广播 支持缺失值数据处理 四则运算支持广播 +add - sub *mul /div divmod()分区和 ...

  5. vue 3.0的搭建

    1. 删除以前的vue 2.x版本,并下载3.x版本 npm uninstall -g vue-cli / yarn global remove vue-cli npm install -g @vue ...

  6. ASP.NET之虚方法

    1.虚方法关键字? Virtual 2.虚方法运行的周期? 虚函数在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时对象实例来动态判断要调用的函数,其中那个申明时定义的类叫申明类,执行 ...

  7. iOS项目之iPhoneX遇到的坑

    问题一: 今天升级到Xcode 9.0,里面多了iPhone 8,iPhone 8P,iPhone X三款手机模拟器,而且发现最多可以同时运行五个模拟器.但随之而来的问题也出现了,就是 iPhone ...

  8. LeetCode 链表(旋转链表61)

    /* * 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. * 构造一个环,对链表进行处理. * *实现原理:先遍历一遍,得出链表长度,注意K可能大于len,之后令k% ...

  9. CMT302 Coursework Assessment Pro-forma

    Cardiff School of Computer Science and Informa5csCoursework Assessment Pro-formaModule Code: CMT302 ...

  10. mysql批量更新数据

    CREATE PROCEDURE `sp_update_temp_data`( out po_returnvalue ) ) leave_top:BEGIN #Routine body goes he ...