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. AbstractMethodError:

    AbstractMethodError: This java.lang.AbstractMethodError is usually thrown when we try to invoke the ...

  2. GO函数

    函数定义 Go语言中定义函数使用func关键字. func 函数名(参数)(返回值){ 函数体 } 函数名:由字母.数字.下划线组成.但函数名的第一个字母不能是数字.在同一个包内,函数名也称不能重名( ...

  3. TeamCity安装

    1 使用docker安装 安装手册:https://hub.docker.com/r/jetbrains/teamcity-server/2 安装包安装. docker run -it --name ...

  4. Thymeleaf的一些操作

    1. js取值 <script th:inline="javascript"> var message = [[${message}]]; console.log(me ...

  5. asp.net core 使用 web deploy 部署网站

    1.添加角色和功能中 web服务器(iis)->管理工具->管理服务  打勾并安装 2.安装 web deploy,也可以通过 web平台安装程序 来安装,搜索web deploy就可以了 ...

  6. COMP 321

    COMP 321April 24, 2019Questions on this exam may refer to the textbook as well as to the manual page ...

  7. SAP abap 内表增加字段方法,结构复用

    1.include data: begin of gth_qamr.         include structure qamr. data: kurztext like qamv-kurztext ...

  8. leetcode实战

    leetcode记录 两数之和 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案. ...

  9. vs2013编译obs源码

    obs源码下载 一种是在GitHub上下载最新的代码 git clone --recursive https://github.com/jp9000/obs-studio.git --recursiv ...

  10. linux中centros6.7安装php5.6,httpd-2.2.19(web产品化)遇到的问题总结

    前段时间在公司实习,web系统产品化的过程踩了很多坑,在这边总结一下,由于对linux不是很懂,全是自己一步步一个一个问题解决的 1,查看系统中是否安装apache,php,mysql环境 Apach ...