其中的括号是必不可少的,因为下面的声明将声明一个由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
对于美国人对我岛礁建设提出的意见对我有利的将坚决采纳
好像现在就可以去看啊