1.什么叫分配内存,什么叫释放内存?
操作系统某一块内存空间的使用权利分配给该程序叫分配内存
操作系统把分配给该程序的内存空间的使用权利收回,该程序就不能够再使用这一块内存空间,叫释放内存。
注:释放内存不是把该内存的内容清零
2.变量为什么必须初始化
不初始化,则变量通常就是垃圾值
3.详细说明系统是如何执行:int i = 5; 这个语句的
1)Vc++6.0 软件请求操作系统为i分配存储空间
2)操作系统会在内存中寻找一块空闲的区域,把该区域当做i来使用
3)Vc++6.0会把i和这块空闲区域关联起来,今后对字母操作就是对这块空闲的区域操作
4)把5存储到字母i所关联的内存区域中
注:所谓内存区域就是内存的一块存储单元
4.请详细列出c语言所有的基本类型
int long int short int char float double
5.在printf 函数中int用%d输出,请问:long int char double float 分别用什么输出?
%d %c %lf %f
6.函数的优点是什么?
1> 避免重复性操作
2> 有利于程序的模块化
7.谈谈你对函数的理解
8.什么是指针,什么是地址,什么是指针变量,三者之间是什么关系?
地址是内存单元的编号 指针就是地址 指针和地址是同一概念 指针变量是存放内存单元编号的变量
指针变量和指针是不同的概念
9.静态变量和动态变量的异同
相同:
都需要分配内存
不同:
静态变量是系统自动分配,自动释放,程序员无法在程序 运行的过程中手动分配,也无分法在程序运行的过程当中 手动释放
静态变量是在栈中分配的
函数终止之后,静态变量的存储空间才会被系统自动释放
动态变量是由程序员手动分配,手动释放,,程序员可以在程序运行的过程当中手动分配,也可以在程序运行的过程中手动释放,
动态变量是在堆中分配的
程序员可以在函数执行的过程中的任何一个时刻手动的释放动态变量的空间,不需要等到函数终止时才释放。
10. c语言中哪些知识点是我们学习的重点。
流程控制 函数 指针 静态内存和动态内存
空指针NULL
NULL 本质也是零,而这个零不代表数字零,而表示的是内存单元的编号零
我们计算机规定了以零为编号的存储单元的内容不可读,不可写。
指针存放的是地址
1)值传递:将变量指向的存储内容,在传递/赋值时,拷贝一份给接受变量。
2)地址传递也叫指针传递:如果是指针,就将指针变量存储的地址,传递给接受变量,如果是数组,就将数组的首地址传递给接受变量。
const和#define的区别
1)const 定义常量时,带类型,define不带类型
2)const是在编译、运行的时候起作用,而define是在编译预处理阶段起作用
3)define只是在简单的替换,没有类型检查。简单的字符串替换会导致边界效应
4)const常量可以进行调试的,define是不能进行调试的,主要是预编译阶段就已经替换掉了,调试的时候就没它了
5)const不能重定义,不可以定义两个一样的,而define通过undef取消某个符号的定义,再重新定义
6)define可以配合#ifdef、#ifndef、#endif来使用,可以让代码更加灵活,比如我们可以通过#define来启动或者关闭调试
定义常量的两种方式
1)#define预处理器定义常量的形式
2)const关键字(const声明指定类型的常量)
运算符介绍
1)算术运算符(+,-,*,/,%)
2)赋值运算符 (=,+= ,-=…)
3)关系运算符 (比较运算符 > >= < <= ==)
4)逻辑运算符 (&& || !)
5)位运算符 (& | ^ ~)
6)三元运算符(表达式?表达1:表达2)
取模公式
a%b = a-a/bb
算术运算符
细节说明
1)对于除号“/”,它的整数除和小数除是有区别的;整数之间做除法时,只保留整数部分而舍弃小数部分。例如:int x=10/3,结果是3
2)当对一个数取模时,可以等价a%b = a-a/bb,取模的本质运算
3)当自增当做一个独立语言使用时,不管是++i;还是i++;都是一样的,等价。
4)当自增当做一个表达式使用时j = ++i等价?i= i+1 ;j = i;
5)当自增当做一个表达式使用时j = i++等价?j = i; i = i+1;