标签:数组 malloc define 顺序 比较 而不是 关键字 作用 其他
1、内存分配的形式有哪些
内存四区模型啊:栈、堆、全局区、代码区。
栈:存局部变量、返回值、参数等
堆:动态申请内存。存malloc或者new出的数据
全局区:存全局变量、静态变量、常量等
代码区:存放二进制代码
2、什么是内存泄漏
占用的内存空间得不到释放,导致这块内存不可再被使用,这就叫内存泄漏
3、栈空间的最大值是多少
windows是2M左右
4、什么是缓冲区溢出
缓冲区是一块有大小的内存区域,当填充的数据大小超过这块缓冲区,导致覆盖这块缓冲区后面的内容,这就叫缓冲区溢出
5、sizeof是关键字吗?
不是,是单目运算符,是一个函数。
6、strlen(“\0”)和sizeof(“\0”)分别等于多少
strlen(“\0”)=0
sizeof(“\0”)=1
7、对于结构体而言,为什么sizeof的返回的值一般大于期望值
因为有字节对齐机制
8、指针进行强制类型转换后与地址进行加法运算,结果是什么?
进行强制转换后应该是数值型,相当于偏移地址,与地址进行加法,结果还是一块内存的地址。
9、使用指针有什么好处
使用指针作为参数传递,减少内存申请,减少不必要的复制工作,提高程序效率
10、引用还是指针
题目没看懂,是说什么时候使用引用还是使用指针么?
11、指针和数组是否表示同意概念
不是啊,指针是一个变量,存放的内容是一块内存的地址;数组是内存开辟的一块空间,元素按顺序存储在这段空间内,数组名就是指向这块内存的首地址的指针。
12、指针是否可以进行 > < >= <= == 运算吗?
==可以,判断这两个指针是否指向同一块内存。
其他的比较起来没有意义啊,比如p1 p2 p1<p2 这是啥意思,p1地址小于p2地址??是吧
13、指针与数字相加的结果是什么
地址偏移,,最终得到的还是一个指向某块内存的指针
14、野指针和空指针
什么叫做野指针呢?就是释放了这块内存,但指向这块内存的指针没能置NULL;
空指针呢,就是指向NULL的指针
15、C/C++中头文件中ifndef和define和endif的作用有哪些
ifndef和endif是配对使用的,防止头文件多次被引用
define是宏定义,是把函数出现的某些字符串替换成宏定义的
16、头文件<>和“”的区别
<>包含的头文件是C/C++标准的头文件 //VS的安装库文件目录下,或者系统库文件下搜索
“”包含的头文件是用户自定义的头文件 //这个是从工程目录下
搜索路径不一样
17、#define有哪些缺陷
容易产生错误 #define a x+y
int c = a*b; ==>替换 c = x+y*b 而不是 c = (x+y)*b
类型不安全,不做类型检查
18、如何使用#define声明一个常数,用以表示一年中有多少秒
#define Year_to_Second 365*24*60*60
19、含参数的宏与函数有什么区别
不知道,,,一个是在预编译处理,,一个是在编译链接过程中使用?
20、宏定义平方运算#define SQR(X) X*X 对吗?
不对。 #define SQR(X) (X)*(X)
21、不能使用大于小于if语句,如何定义一个宏来比较两个数a、b的大小
#define Judge(a,b)
标签:数组 malloc define 顺序 比较 而不是 关键字 作用 其他
原文地址:https://www.cnblogs.com/westlife-11358/p/9388309.html