结构体数组 C++ Primer Plus(第七章 函数—C++的编程模块)内容精要(2)

电脑杂谈  发布时间:2018-02-09 15:40:06  来源:网络整理

其中的括号是必不可少的,因为下面的声明将声明一个由4个指向int的指针组成的数组,而不是由一个指向由4个int组成的数组的指针;另外,函数参数不能是数组:

还有另外一种格式,这种格式与上述原型的含义完全相同,但可读性更强:

上述两个原型都指出,ar2是指针而不是数组。还需注意的是,指针类型指出,它指向由4个int组成的数组。因此,指针类型指定了列数,这就是没有将列数作为独立的函数参数进行传递的原因。结构体数组

12.函数和C-风格字符串

假设要将字符串作为参数传递给函数,则表示字符串的方式有三种:

char数组;

结构体数组_结构体数组做函数参数_结构体数组定义

用引号括起的字符串常量(也称字符串字面值);

被设置为字符串的地址的char指针。

13.函数和结构

可以将一个结构赋给另外一个结构。同样,也可以按值传递结构,就像普通变量那样。在这种情况下,函数将使用原始结构的副本。另外,函数也可以返回结构。与数组名就是数组第一个元素的地址不同的是,结构名只是结构的名称,要获得结构的地址,必须使用地址运算符&。使用结构编程时,最直接的方式是像处理基本类型那样来处理结构;也就是说,将结构作为参数传递,并在需要时将结构用作返回值使用。然而,按值传递结构有一个缺点。如果结构非常大,则复制结构将增加内存要求,降低系统运行的速度。出于这些原因(同时由于最初C语言不允许按值传递结构),许多C程序员倾向于传递结构的地址,然后使用指针来访问结构的内容。

14.C++无论何种数据,是否要delete关键看其空间是否使用new分配的。

1,函数冲定义的局部变量指针,单纯是一个局部变量是不用delete;

2,C++ 如果类中有一个指针数据成员,而没有用new, 析构函数也是不用delete的;

在类或函数中,int* ,char* 这些只要不是new的,也同样不用释放,系统会自动把他们占的内存释放掉,只有new的才会手动的去delete

原理:

int*, char* ,这些定义是局部变量,存在于栈上,比如int *p;p在栈上,而且p的值也是栈的一个地址。

但是当int *p = new int ;这时候,p这个变量是在栈上的。但是p的值是一个地址,这个地址是堆上的一个地址。如果不delete p;那么,这个地址会一直被占用着,不能被其他的对象所使用,所以我们用完这个地址,要把这个地址释放掉。

因此栈的空间会自动释放,而堆里的空间必须手动释放。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-69031-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 魏佳庆
      魏佳庆

      好像现在就可以去看啊

    • 神裂火织
      神裂火织

      按今天的算有3000

    • 潘杰
      潘杰

      对于美国人对我岛礁建设提出的意见对我有利的将坚决采纳

    热点图片
    拼命载入中...