一、C语言编程中的几个基本概念
1、#include<>与#include""区别
这个题目考查大家的基础能力,#include<>用来包含开发环境提供的库。#include""用来包含.c/.cpp文件所在目录下的头文件;
言外之意:用户在工程里面自己创建的头文件用#include""包含
注意:有些开发环境可以在当前目录下自动搜索(包含子目录),有些开发环境需要在指定明确的文件或路径。
2、switch(c)语句中c可以是int,long,char,unsigned int类型;即可以隐式转换为整型
3、const 用途
(1):欲组织一个变量被改变,可以使用const关键字。在定义const变量时,通常需要对其进行初始化,因为以后就没机会改变
(2):对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
(3):在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;
(4):对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;
(5):对于类的成员函数,有时候必须指定其返回值为const类型,以使其返回值不为“左值”;
4、#ifndef/#define/#endif
#ifndef _USER_H_ #define _USER_H_ #define NAME_MAX 32 #define SEX_MAX 32 #define TEL_MAX 32 #define ADD_MAX 32 #define PEOPLE_MAX 32 #include
#define NAME_MAX 32 #define SEX_MAX 32 #define TEL_MAX 32 #define ADD_MAX 32 #define PEOPLE_MAX 32 #include#include #include typedef struct student { char name[NAME_MAX]; char sex[SEX_MAX]; int age; char tel[TEL_MAX]; char add[ADDER_MAX]; }Stu; typedef struct contact { int capacity; Stu *human; int count_p; }Con, *Pcon; void add_people(Pcon pcon); int find_people(Pcon pcon); void delete_people(Pcon pcon); void alter_people(Pcon pcon); void show_people(Pcon pcon); void clean_people(Pcon pcon); void order_people(Pcon pcon); void inittel(Pcon pcon); void menu(); void free_mem(Pcon pcon); #endif #include #include typedef struct student { char name[NAME_MAX]; char sex[SEX_MAX]; int age; char tel[TEL_MAX]; char add[ADDER_MAX]; }Stu; typedef struct contact { int capacity; Stu *human; int count_p; }Con, *Pcon; void add_people(Pcon pcon); int find_people(Pcon pcon); void delete_people(Pcon pcon); void alter_people(Pcon pcon); void show_people(Pcon pcon); void clean_people(Pcon pcon); void order_people(Pcon pcon); void inittel(Pcon pcon); void menu(); void free_mem(Pcon pcon); #endif
(1):主要作用是防止头文件被重复定义
(2):这些条件预编译多用于对代码的编译控制,增加代码的可裁剪性,通过宏定义可以轻松的对代码进行裁剪;
5、全局变量和局部变量
先看一段代码:
#include
void test()
{
int num = 0;
num ++;
printf("%d\n", num);
}
int main()
{
int i = 0;
for(i=0;i<10;i++)
{
test();
}
return 0;
}
上述代码运行结果将会是连续的 1 1 1 1 1 1 1 1 1 1
而不是 1 2 3 4 5 6 7 8 9 10
是因为:
#include
void test()
{
int num = 0;
num ++;
printf("%d\n", num);
}
test()函数中定义的num是局部变量当主函数调用test()函数式创建变量,调完即刻销毁
当用static修饰是结果发生了变化
#include
void test()
{
static int num = 0;
num ++;
printf("%d\n", num);
}
int main()
{
int i = 0;
for(i=0;i<10;i++)
{
test();
}
return 0;
}
(1):区别 全局变量储存在静态数据库当中,局部变量在堆栈。其实,由于计算机没有通用数据寄存器,则函数的参数、局部变量的返回值只能保存在堆栈中。(局部变量太大可能导致栈溢出,所以建议把大数组放在main()函数之外,以防止栈溢出);
例如如下程序将会导致栈溢出:
#include
int main()
{
int arr[1024*1024];
return 0;
}