nullC与C++的不同C与C++的不同程序设计思想不同程序设计思想不同C++面向对象
以设计类为主,创建类的对象,指挥对象
C面向过程
没有类与对象
以设计函数(过程)为主,逐步细化工作过程,最终解决问
不是对立的,面向过程是面向对象的基础
C++向下兼容C类库vs函数库类库vs函数库C++系统提供很多类库
iostream, string, …
C系统提供很多函数库
数学函数库
,
字符串处理函数库
…
此外,C++继承了C的函数库后,标准C++头文件改变了,所以还有:
,输入输出的不同输入输出的不同C++使用iostream: IO流类库
int a, b;
cin>>a>>b;
cout<<“a=”<格式输出
scanf( ): 格式输入nullint a, b;
printf(“请输入: a, b的值:\n”);
scanf(“%d, %d”, &a, &b);
用户要输入: 10 , 20
scanf(“%d%d”, &a, &b);
用户要输入: 10 20
printf(“a=%d, b=%d\n”, a, b);
在格式字符串中,以%开头的内容
示要替代的数据
%d整数,%f浮点数,%c字符,%s字符串多文件结构多文件结构C++的类划分
myclass.h 类1的定义的头文件
myclass.cpp 类1的实现的源文件
yourclass.h 类2的定义的头文件
yourclass.cpp 类2的实现的源文件
…
在编写源文件过程中,需要用到哪个类,就包含哪个类的头文件
#inlcude “myclass.h”null函数划分库
myfunction.h 库1的函数的原型
myfunction.cpp 库1的函数的具体定义
yourfunction.h 库2的函数的原型
yourfunction.cpp 库2的函数的具体定义
…
在编写源文件过程中,需要用到哪个函数库,就包含哪个函数库的头文件
#include “myfunction.h”动态内存管理动态内存管理C++用操作符
new和delete
int *p; p = new int[5];
delete [] p; //如果p指向的是对象,delete会自动调用析构函数
C用函数库
malloc( 字节数 ) 得到 void *
int *p; p = (int *) malloc( sizeof(int)*5 );
free( )
free( p ); //即使p指向的是对象也不会析构C的结构体C的结构体C没有类
自定义数据类型用得最多的是结构体structnullC语言中定义结构的方法
1、先定义结构类型,再定义变量名
struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
struct student Zhang, Wang; //c用法null2、在声明类型的同时定义结构变量
struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
} Zhang, Wang;null3、直接定义结构变量
struct //无名结构体
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
} Zhang, Wang;null通常结合typedef使用,例:
#define NAMESIZE 20
typedef struct
{ char Name[NAMESIZE];
char Sex;
int Age;
} Datatype;
Datatype Zhang, Wang;null可以同时定义多个新类型:
typedef struct
{ char Name[NAMESIZE];
char Sex;
int Age;
} Datatype, * PDatatype;
上面的语句定义了新类型Datatype,同时定义了指向Datatype类型的一个指针类型PDatatype其它其它常量
C没有const,用宏定义
#define Name 10
宏定义的本质是编译前做替换
它不是C/C++的语句
注释
C++有 //注释内容(放在行末)
C 用 /*注释内容(可跨行) */
C的基本类型没有bool类型nullC函数的默认返回值类型
f( ) //函数默认返回值类型为int
{ }
源文件扩展名
C++: *.cpp, c plus plus
C: *.c
VC++6.0环境下,如果不输入扩展名, 默认是cpp