1.由gcc编译的C语言程序占用的内存分为哪几个部分?
答:栈区:存放函数的参量、局部变量。
堆区:提供程序员动态申请的内存空间
全局(静态)区(static):存放全局变量和静态变量
程序代码区:存放函数体的二进制代码和字符串常量
2.全局变量和静态变量的区别?
答:①全局变量存储在静态区,进入main函数之前就被创建,生命周期为整个源代码
②局部变量在栈区中分配,在函数被调用时才被创建,在函数退出时销毁,生命周期为函数内
3.头文件中的ifndef...define...endif是什么作用?
答:防止头文件被重复多次的包含。
4.#include <filname.h>和include "filename.h"有什么区别?
答:前面用来包含库里面的头文件,后面的用来包含自定义的头文件。
5.是否了解原码、反码和补码?
答:原码:一个十进制数转化成的二进制数就是这个十进制数的原码。
反码:正数码与原码相同,负数为1变0,0变1.
补码:正数的补码和原码相同,负数的补码为反码加一。
6.数组和指针的区别?
答:①数组:数组是用于存储多个类型相同数据的集合。
②指针:指针相当于一个变量,但是他和普通变量不一样,他存放的相当于是其他变量在内存中的地址。
区别:①赋值:同类型的指针变量可以相互赋值;数组不行,只能一个一个元素的赋值或者拷贝。
②存储方式:数组:数组在内存中是连续存放的,开辟的是一片连续的空间。数组是根据数组的下方进行访问的,数组的存储空间,不是在静态区就是在栈区。
指针:指针本身就是一个变量,作为局部变量时存储在栈区。
③求sizeof:数组所占空间的内存大小:sizeof(数组名)
数组的元素个数:sizeof(数组名)/sizeof(数据类型)
无论指针的类型是什么,32位平台永远是4,64位平台永远是8。