项目中用到,随手记一下:

1.二维数组、与指针

创建二维数组指针的方式:

a.已知一维的大小

1 int **array=new int *[rows];
2 (for int i=0;i<rows;i++)
3 array[i]=new int[colums];

释放指针方式

1 for(int i=0;i<rows;i++)
2 delete array[i];
3 delete []array;

b.两维都未知:

char **a;
a = new char* [m];
a[] = new char[m * n];//一次性分配所有空间
for(int i=; i<m; i++)
{
a[i] = a[i-] + n;//分配每个指针所指向的数组
}
printf("%d\n", sizeof(a));//4,指针
printf("%d\n", sizeof(a[]));//4,指针
delete[] a[];
delete[] a;

对象 数组、对象指针的使用

  Date date[N];

  Date *p=date;//指向对象数组第一个位置的指针

参考连接:http://www.xuebuyuan.com/3183755.html

通过引用来传递数组

数组形参可以声明为数组的引用,如果形参是数组的引用,编译器不会把数组实参转化为指针,而是传递数组本身,这种情况下,数组大小成为形参和实参类型的一部分,编译器会检查数组的大小。

void printArr(int (&a)[]) { /* ... */ }
int main(){
int i = , j[] = {,}, k[] = {};
printArr(&i); // error!
printArr(j); //error!
printArr(k); // ok!
return ;
}

会严格检查数组的大小。

二级指针、与指针作为函数参数:

指针传参,虽然形参和实参会指向同样的内容,但是两个在内存中都会被分配地址,在用到二级指针时,若指向该指针的二级指针会出现不同结果。

void func(int *p)
{
cout<<"func:&p="<<&p<<",p="<<p<<endl; //note:3
p = &b;
cout<<"func:&p="<<&p<<",p="<<p<<endl; //note:4
}

在调用func函数时

int a=;b=;
*q=a;
func(q);

q和p在内存中的地址是不同的,虽然二者刚开始都指向a,创建了一个副本;在执行p=&b之后;q的地址还是指向a;而p指向b;

编译器使 p = q(但是&p != &q,也就是他们并不在同一块内存地址,只是他们的内容一样,都是a的地址)。如果函数体内的程序修改了p的内容(比如在这里它指向b)。在本例中,p申请了新的内存,只是把 p所指的内存地址改变了(变成了b的地址,但是q指向的内存地址没有影响),所以在这里并不影响函数外的指针q。

C++二维数组、指针、对象数组、对象指针的更多相关文章

  1. 洛谷 P1972 [SDOI2009]HH的项链-二维偏序+树状数组+读入挂(离线处理,思维,直接1~n一边插入一边查询),hahahahahahaha~

    P1972 [SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含 ...

  2. Qt信号槽机制的实现(面试的感悟,猜测每一个类保存的一个信号和槽的二维表,实际使用函数指针 元对象 还有类型安全的检查设定等等)

    因为面试时问了我这道题,导致我想去了解信号槽到底是如何实现的,于是贴着顺序看了下源码,大致了解了整个框架.网上关于信号槽的文章也很多,但是大部分都是将如何应用的,这里我就写一下我所理解的如何实现吧, ...

  3. poj3067 二维偏序树状数组

    题解是直接对一维升序排列,然后计算有树状数组中比二维小的点即可 但是对二维降序排列为什么不信呢?? /* */ #include<iostream> #include<cstring ...

  4. hdu1081 DP类最大子段和(二维压缩+前缀和数组/树状数组计数)

    题意:给出一个 n * n 的数字矩阵,问最大子矩阵和是多少. 由于和最长子段和问题类似,一开始想到的就是 DP ,一开始我准备用两个循环进行 DP ,对于每一个 (i,j) ,考察(i - 1,j) ...

  5. 二维偏序+树状数组【P3431】[POI2005]AUT-The Bus

    Description Byte City 的街道形成了一个标准的棋盘网络 – 他们要么是北南走向要么就是西东走向. 北南走向的路口从 1 到 n编号, 西东走向的路从1 到 m编号. 每个路口用两个 ...

  6. $[SHOI2007]$ 园丁的烦恼 二维数点/树状数组

    \(Sol\) 设一个矩阵的左上角为\((x_1,y_1)\),右下角为\((x_2,y_2)\),\(s_{x,y}\)是到\((1,1)\)二维前缀和,那么这个矩阵的答案显然是\(s_{x_2,y ...

  7. 【BZOJ】1047: [HAOI2007]理想的正方形(单调队列/~二维rmq+树状数组套树状数组)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1047 树状数组套树状数组真心没用QAQ....首先它不能修改..而不修改的可以用单调队列做掉,而且更 ...

  8. C. Arcade dp二维费用背包 + 滚动数组 玄学

    http://codeforces.com/gym/101257/problem/C 询问从左上角走到右下角,每次只能向右或者向左,捡起三种物品算作一个logo,求最多能得到多少个logo. 设dp[ ...

  9. java 二维数组和对象数组

    1.二维数组:二维数组就是存储一维数组(内存地址/引用)的数组 2.二维数组的初始化 1) int intA[][]={{1,2},{2,3},{3,4,5}}; 2) int [][] intB=n ...

  10. c++ 依据输入动态声明数组(一维,二维)

    较早的编译器是不同意这样做的,所以一些书籍比方以Tc解说的书本都说数组的下标不能是变量.在vc6.0下亦是如此. 只是在一些较新的编译器如dev c++已经支持了,例如以下代码不会报错 #includ ...

随机推荐

  1. c# mongodb drive IngoreExtraElements and RegisterClassMap

    private static void RegisterClassMaps(IEnumerable<Type> clrTypes) { foreach (var clrType in cl ...

  2. wireshark基础学习—第二部分wireshark的基础操作

    抓取报文: 下载和安装好Wireshark之后,启动Wireshark并且在接口列表中选择接口名,然后开始在此接口上抓包.例如,如果想要在无线网络上抓取流量,点击无线接口.点击Capture Opti ...

  3. 20165306 Exp3 免杀原理与实践

    Exp3 免杀原理与实践 一.实践内容概述 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shellcode编程 2.通过组合应用各种技 ...

  4. swift 有道 翻译文档(2 条件语句 循环语句)

    控制流使用if和switch来创建条件语句,使用for-in.while和repeat-while来创建循环.条件或循环变量的括号是可选的.身体周围需要支撑. let individualScores ...

  5. 记一次IIS发布网站导致系统时常跳入登录页面的问题解决

    服务器:winserver2012R2 iis 发布网站后,正常浏览网页,时常跳到登录页面,第一反应session过期,因为登录信息都存在session,但session 都是默认配置过期时间为20分 ...

  6. vue cli 3 lintOnSave 配置有时无效问题

    一个使用vue cli 3.2创建的项目,创建时未开启 lintOnSave,后来希望开启并设置为 lintOnSave: 'error',但配置不生效. 解决方法1:新创建项目(此时vue cli ...

  7. sql server 学习笔记 ( row_number, rank, dense_rank over partition by order by )

    refer : https://blog.csdn.net/winer2008/article/details/4283539 https://www.cnblogs.com/linJie193090 ...

  8. PowerDesigner设置Oracle不区分大小写

    一. powerdesigner设置当前数据库 打开powerdesigner,然后选择菜单DatabaseChange current DBMS,如图: 修改这个下拉框的值即可. 二. power ...

  9. Lyrics来源

    Lyre 里拉琴,古希腊语,在北欧流行至中世纪.   Lyrics in sheet music. This is a homorhythmic (i.e., hymn-style) arrangem ...

  10. springboot 启动报错

    有一个警告 :** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the d ...