C++语言二维数组、指针、对象数组、对象指针
小标 2018-07-25 来源 : 阅读 1166 评论 0

摘要:本文主要向大家介绍了C++语言二维数组、指针、对象数组、对象指针,通过具体的内容向大家展示,希望对大家学习C++语言有所帮助。

本文主要向大家介绍了C++语言二维数组、指针、对象数组、对象指针,通过具体的内容向大家展示,希望对大家学习C++语言有所帮助。

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

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[0] = new char[m * n];//一次性分配所有空间  for(int i=1; i<m; i++)  

{  

    a[i] = a[i-1] + n;//分配每个指针所指向的数组  }  

printf("%d\n", sizeof(a));//4,指针  

printf("%d\n", sizeof(a[0]));//4,指针  delete[] a[0];  delete[] a;  

 

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

  Date date[N];

 

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

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

通过引用来传递数组

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

 

void printArr(int (&a)[10]) { /* ... */ }int main(){

    int i = 0, j[2] = {0,1}, k[10] = {0};

    printArr(&i); // error!

    printArr(j); //error!

    printArr(k); // ok!

    return 0;

}

 

会严格检查数组的大小。

 

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

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

 

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=10;b=100;*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/C+的相关知识,希望对C/C+有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程