C/C++

来源:互联网 发布:方舟生存进化最终优化 编辑:程序博客网 时间:2024/06/05 23:35

1.数组在传递中,形参数组会被退化为指针,就算int arr[20],编译器也不会为它分配内存。


2.数组arr,和&arr数据类型不一样,arr+1后只会移动到下一个位置,&arr+1直接移动到整个数组外的位置。


3.数据类型可以理解为固定内存大小的别名,数据类型的作用:编译器预算(对象)变量分配的内存空间大小。所以arr和&arr固定长度不一样,arr固定长度为4字节,而&arr固定长度为80字节。


4.void*为左值的时候可以接受任意数据类型,void*为右值的时候必须强转。类似java的Object数据类型。


5.C/C++的int arr[20]分配的是栈内存,如果在被调用函数里定义数组,该内存会在弹栈时被编译器清除内存。那么返回它的首地址就没有用了。java里的数组定义分配的是堆内存,所以没有这个问题。


6.C/C++编译器里,对于形参,指针*p,**p,******p,它们分配的内存都是一样的,编译器只分配4个字节。p为标号,不在栈、堆、全局(静态)这些内存里,使用时*是一个指令,类似于汇编的jmp。


7.一切变量都是标号,int *p里的p,char a 里的a。


8.指针最大意义最大作用,一个是在函数里进行 *p1++ = *p2++,另一个是指针作为函数形参。


1 0
原创粉丝点击