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
- c
- c
- c
- c
- C
- c
- c
- c
- C+
- c
- C
- c
- c
- c
- C
- C
- c
- C
- AS 快捷键总结
- 微服务架构 (三): 在微服务的架构中, 也许不需要 Integration Hub
- android studio 2.2 ndk jni 开发 调试 hello world
- 强行替换exe图标的方法
- 2016夏季练习——线段树
- C/C++
- 求4位吸血鬼数字问题
- EasySwift/YXJImageCompressor 图片压缩,拍照上传压缩图片,比例压缩,data压缩,方便好用
- 【面试】C++继承问题集锦
- android 使用Builder设计模式,设计ToolBar
- EasySwift/YXJPageControl 高扩展的PageController
- html中使用到的标签
- org.springframework.beans.factory.NoSuchBeanDefinitionException
- 操作系统学习笔记——进程与线程联系与区别