【C/C++】数组 & 指针
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++】数组 & 指针的更多相关文章
- C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用
类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...
- 问题:C++ 删除数组指针实用 delete []变量 汇编怎么实现的?
问题:C++ 删除数组指针实用 delete []变量 汇编怎么实现的?
- 指针数组 vs 数组指针
指针数组,故名思义,就是指针的数组,数组的元素是指针: 数组指针,同样,就是直想数组的指针. 简单举例说明: int *p[2]; 首先声明了一个数组,数组的元素是in ...
- c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针
1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...
- C/C++中的指针数组和数组指针
1. 指针数组 定义:int *p[n],由于[]的优先级高于*,p和[]结合成一个数组,该数组的元素存储的是int类型的指针,由于数组内容是指针,因此p+1的步长是sizeof(int*),在32位 ...
- C++中,指针数组和数组指针
这俩兄弟长得实在太像,以至于经常让人混淆.然而细心领会和甄别就会发现它们大有不同. 前者是指针数组,后者是指向数组的指针.更详细地说. 前: 指针数组;是一个元素全为指针的数组. 后: 数组指针;可以 ...
- C语言 数组类型与数组指针类型
//数组类型与数组指针类型 #include<stdio.h> #include<stdlib.h> #include<string.h> void main(){ ...
- delphi动态数组指针问题
就一个button事件 procedure TForm1.btn7Click(Sender: TObject); Type TMyArr = array of array of array of In ...
- delphi 数组类型与数组指针的巧妙利用
{本例通过存取结构, 慢慢引入了数组类型与指针的一些使用方法; 其中六个小例子的测试内容和结果都是一样的. ---------------------------------------------- ...
- PHP中使用数组指针函数操作数组示例
数组的内部指针是数组内部的组织机制,指向一个数组中的某个元素.默认是指向数组中第一个元素通过移动或改变指针的位置,可以访问数组中的任意元素.对于数组指针的控制PHP提供了以下几个内建函数可以利用. ★ ...
随机推荐
- 【JavaScript】for循环小练习
1.输出1-100的和 var sum = 0; for(var i=1;i<=100;i++){ sum = sum + i; } document.write(sum); 2.输出1-100 ...
- python-列表与元组
列表(List) 特性: 列表也是一种Sequence 类型 下标 能切片 可以存储任何类型的数据,每个元素是任意类型,可以存放任 ...
- Linux串口通信之termios结构体说明
termios结构体中,该结构体一般包括如下的成员:tcflag_t c_iflag; tcflag_t c_oflag; tcflag_t c_cflag; tcfla ...
- 操作redis
数据库分为: 1)传统的关系型数据库 mysql.oracle.sql server.sqllie.db2 id name passwd cratetime stu 特点: a 数据存在磁盘上 b 使 ...
- Vue入门:Vue项目创建及启动
1. 创建Vue项目存放地址 用于存放Vue项目,找个自己处理方便的地方.本人地址:D:\Program Files\Workspace\Vue 2. 创建项目 进入cmd窗口 进入项目存放地址 执行 ...
- Oracle SQL语句之常见优化方法总结--不定更新
1.SQL语句尽量用大写的: 因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行. 2.WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理, ...
- HTTP 400错误--请求无效
在发送请求后台数据时会报出来HTTP400错误,请求无效,出现这个请求无效报错说明请求没有进入到后台服务里 原因:1.前端提交数据的字段名称或者是字段类型和后台的实体类不一致.导致无法封装 2.前端提 ...
- Rabbit原理理解
1.RabbitMQ知多少 圣杰 2.[RabbitMQ]——三种Exchange模式(Fanout.Direct.Topic) https://blog.csdn.net/hao134838/a ...
- 16: vue + crypto-js + python前后端加密解密
1.1 vue中使用crypto-js进行AES加密解密 参考博客:https://www.cnblogs.com/qixidi/p/10137935.html 1.初始化vue项目 vue i ...
- asp.net 根据连接地址保存文件,图片
第一种方式 下载图片,文件 WebClient my = new WebClient(); string url = "http://localhost:1015/resource/loa ...