C++程序设计教学大纲初级中级文档格式.docx

上传人:b****3 文档编号:6468082 上传时间:2023-05-06 格式:DOCX 页数:127 大小:63.60KB
下载 相关 举报
C++程序设计教学大纲初级中级文档格式.docx_第1页
第1页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第2页
第2页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第3页
第3页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第4页
第4页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第5页
第5页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第6页
第6页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第7页
第7页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第8页
第8页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第9页
第9页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第10页
第10页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第11页
第11页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第12页
第12页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第13页
第13页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第14页
第14页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第15页
第15页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第16页
第16页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第17页
第17页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第18页
第18页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第19页
第19页 / 共127页
C++程序设计教学大纲初级中级文档格式.docx_第20页
第20页 / 共127页
亲,该文档总共127页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++程序设计教学大纲初级中级文档格式.docx

《C++程序设计教学大纲初级中级文档格式.docx》由会员分享,可在线阅读,更多相关《C++程序设计教学大纲初级中级文档格式.docx(127页珍藏版)》请在冰点文库上搜索。

C++程序设计教学大纲初级中级文档格式.docx

(1)基本数据类型:

int,char,wchar_t,float,double,bool,type[],type*,void,struct,union,enum,class,string,vector,list,set,

multiset,multimap,map,pair,stack,deque,引用数据类型。

6. 

typedef有哪些使用方式?

答:

typedef是c/c++代码中经常用到的一个关键字.他的主要作用是给变量类型定义一个别名.从而达到代码简化,促进跨平台开发的目的.

(1)下面是typedef的最经常的用法:

typedefstruct{

inta;

intb;

}MY_TYPE;

这里把一个未命名结构直接取了一个叫MY_TYPE的别名,这样如果你想定义结构的实例的时候就可以这样:

MY_TYPEtmp;

这是typedef的第一种用法.比较简单.就是typedef原变量类型别名.相似的例子:

typedefunsignedlongDWORD;

typedefvoidfar*LPVOID;

//voidfar*是原变量类型,表示一个void型指针(far在32位系统里面已经没有意义了)等等

(2)typedef还有第二种用法.函数指针的使用。

.

比如:

typedefint(*MYFUN)(int,int);

这种用法一般用在给函数定义别名的时候.(其实质还是和上面的用法一样的)上面的例子定义MYFUN是一个函数指针,函数类型是带两个int参数,返回一个int.

7. 

什么是字符串常量?

如何使用?

(1)字符串常量是一对双引号括起来的字符序列。

在c++中,把字符串常量称作c规格的字符串常量,字符串常量总是以’\0’结束。

(2)字符串的处理方式:

a.字符数组。

b.字符指针

c.string类型。

(3)字符串的常用函数:

Length() 

size() 

empty() 

c_str()substr()

Find() 

replace() 

at()

使用举例:

对字符串中的所有错误的”0”替换为”o”;

string>

cstring>

windows.h>

//字符串中的替换。

intmain(void)

stringstr="

hell0w0rld"

string:

:

size_typepos;

while

(1)

{

pos=str.find("

0"

);

if(pos==string:

npos)

break;

}

str.replace(pos,1,"

o"

str<

8. 

什么是枚举常量?

如何使用和定义?

(1)枚举常量是一种符号常量,它不是变量,不占有内存空间。

(2)定义了枚举类型后,可以定义该枚举类型的变量。

变量的取值只能是枚举类型定义时规定的值。

(3)定义枚举使用enum{},如果没有规定,第一个符号常量的枚举值就是0,其它枚举值依次增1。

使用举例:

enumCOLOR{RED,WHITE,BLACK,GREEN,BLUE};

COLORcolor=RED;

intpaint=WHITE;

cout<

color<

"

paint<

9. 

什么是常量?

常量如何定义?

(1)常量是程序中不变的量,代表固定不变的值。

(2)定义常量的时候必须进行初始化;

(3)常量名不能放在赋值语句的左边。

10. 

左值和右值的区别?

答:

(1)左值:

(leftvalue)是指能够出现在赋值表达式左边的表达式,左值具有存放数据的空间的功能。

(2)右值:

(rightvalue)只能出现在赋值表达式右边的值。

11. 

sizeof运算符的使用?

(1)sizeof是运算符,不是函数。

(2)sizeof的操作结果类型为size_t,利用typedef关键对unsignedint做了别称。

它返回操作数或者类型在内存中的字节长度。

(3)sizeof具有三中使用方式:

a. 

sizeof(数据类型)

b. 

sizeof(变量名称)

c.sizeof变量名称。

代码举例如下

voidtestSizeof(charch[100])

//数组做为函数的参数;

choffunctionis:

sizeofch<

inta;

//普通变量

char*s="

ibm"

//指针变量

charch[]="

//字符数组

charch2[100]="

IBM"

ais:

sizeofa<

sis:

sizeofs<

chis:

ch2is:

sizeofch2<

testSizeof(ch2);

结果:

4sis:

4chis:

12ch2is:

100

4

12. 

c++中有哪些类型转换?

(1)默认类型的转换(隐式类型的转换)

(2)强制类型的转换

(3)命名类型的转换

命名类型的转换:

cast_name<

type>

(expr);

static_cast 

静态的转换

(2) 

dynamic_cast 

动态的转换

(3) 

const_cast 

去掉类型的const特性

(4) 

reinterpre_cast 

重新解释

(1).const_cast。

你知道,一个int*是可以直接赋给一个constint*的,但是一个constint*是不可以直接赋给一个int*的。

这就需要:

int*pi=const_cast<

int*>

pci;

他还可以把volatile和对齐特性(alignment)去掉。

2.reinterpret_cast

就是:

把整型(广义的)转换为指针,把指针转换为整型(广义的),把指针转换为另一个类型的指针。

3.static_cast

可以做任何显式的自动转换(implicitcast),也可以做那些自动转换的逆转换,但是不能消除const,volatile和对齐。

4.dynamic_cast

就是根据类型信息来cast。

示例:

去掉const特性

inta=20;

const 

int*p=&

a;

int*p2=const_cast<

int*>

(p);

*p2=40;

a<

*p<

*p2<

//内存的重新解释:

inta=30;

intb=reinterpret_cast<

int>

b<

13. 

增量表达式和短路表达式?

答:

(1)前增和后增的区别:

前增是先增再赋值,后增是先赋值再增

(2)如果多个表达式用&

&

进行连接,则一个表达式为假则真个表达式为假。

(3)如果多个表达式用||进行连接,则一个表达式为真,则真个表达式为真

第二部分:

c++中的函数,程序结构。

作者:

魏华超 

联系方式:

weihuachao@

什么是函数原型?

(1)函数原型是一条程序语句,它以分号结束。

它有函数的返回类型,函数名和参数列表组成。

(2)参数表包含所有参数的数据类型,参数之间用逗号分开。

C++中,函数的声明就是函数的原型。

(3)标准库函数的声明都在头文件中提供。

(4)函数原型和函数的定义必须在返回类型,函数名字和参数表上保持一致。

全局变量和局部变量和静态变量的使用?

(1)一个程序将操作系统分配其运行的内存块分成4个区域:

a. 

代码区,存放程序的代码,即程序中的各个函数的代码块。

b. 

全局数据区,存放程序的全局数据和静态数据。

c. 

堆区,存放程序的动态数据。

d. 

栈区,存放程序的各个数据,函数中的变量

(2)在函数的外部定义的变量是全局变量。

全局变量有编译器建立,并且初始化为0。

该变量存放在全局数据区。

该变量的作用域在整个应用程序内有效。

如果调用不同源文件内的变量或者函数使用extern关键字。

Extern关键字仅是声明,不时变量的定义。

(3)在函数内部定义的变量是局部变量。

作用域函数的内部,生命的周期是函数的调用期间。

该变量存放在栈区。

(4)在局部变量的前面加上static关键字,就成了局部静态变量。

局部静态便领存放在内存的全局数据区。

作用域在函数的内部,生命周期整个应用程序。

(5)在全局变量的前面加上static关键字,是全局静态变量。

存放在全局数据区。

作用域在当前文件有效,生命周期整个应用程序。

(6)在函数的前面加上static关键字,则该函数只在当前文件内有效。

什么是递归函数?

递归函数是自调用函数,在函数内部直接或者间接的调用自己。

什么是内联函数?

如何使用内联函数?

(1)内联函数也称做内嵌函数,它主要是解决程序的运行效率。

(2)内联函数避免了函数的开栈和参数传递等时间,而是调用的时候进行代码的替换,提高程序的效率。

(3)在函数的声明的时候加上inline关键字便可以使函数成为内联函数。

(4)内联函数的定义应该放在头文件内。

内联函数的函数体有哪些限制?

(1)内联函数不能有复杂的控制语句,如for,switch和while。

(2)递归函数不能是内联函数。

(3)存在以上情况,编译器把内联函数当作普通的函数对待。

什么是重载函数?

(1)出现在相同作用域中的函数,具有相同的名字而行参表不同,则称为重载函数。

(2)重载函数必须在参数的类型,参数的个数和参数的顺序上不同,只有返回值的不同不能产生重载。

(3)不能用typedef定义的类型名来区分重载函数声明中的参数。

重载函数的匹配顺序是什么?

(1)寻找一个严格的匹配,如果找到了,就用那个函数。

(2)通过内部转换寻求一个匹配,如果找到了就用那个函数。

(3)通过用户自定义的转换,如果找到了,就用那个函数。

什么是默认参数?

(1)在函数的声明或者定义时对参数给定默认值的参数成为默认参数。

(2)函数的声明中如果提供了默认值,则函数的定义不允许默认值。

默认参数的顺序规定?

(1)函数的定义时默认值的顺序应该从右到左逐渐定义。

如果参数列表中的一个参数给定了默认值,则后边的所有的参数都必须给定默认值。

(2)函数的调用时,参数的顺序只能从左到右匹配。

c++中有哪些不同的作用域和声明周期?

(1)c++中的作用域有:

局部作用域,函数作用域,文件作用域,函数原型作用域。

(2)c++中的生命周期有:

静态生命期,局部生命周期,动态生命周期。

如何使用c++中的多文件结构?

#ifndef_FILE_NAME

#define_FILE_NAME

#endif

函数指针的概念和作用?

(1)函数指针是指向函数而非指向对象的指针。

函数指针的类型由返回类型和行参表来确定,和函数的名称没有关系。

(2)可以使用typedef简化函数指针的定义。

例:

利用函数指针对不同的成员变量进行排序。

structStu

stringname;

intage;

};

boolcompareByName(Stu 

s1,Stus2)

return(s1.name>

s2.name);

boolcompareByAge(Stus1,Stus2)

return(s1.age>

s2.age);

voidsort(Stu*begin,Stu*end,bool(*com)(Stus1,Stus2))

Stutemp;

for(inti=0;

i<

end-begin;

i++)

for(intj=0;

j<

end-begin-i-1;

j++)

if(com(begin[j],begin[j+1]))

temp=begin[j+1];

begin[j+1]=begin[j];

begin[j]=temp;

Stustu[5];

stu[0].name="

rose"

stu[0].age=20;

stu[1].name="

jack"

stu[1].age=60;

stu[2].name="

lucy"

stu[2].age=23;

stu[3].name="

tom"

stu[3].age=70;

stu[4].name="

chal"

stu[4].age=24;

sort(stu,stu+5,compareByAge);

5;

nameis:

stu[i].name<

ageis:

stu[i].age<

如何使用c++中的动态链接库?

第三部分:

数组,指针,堆分配

作者:

联系方式weihuachao@

数组如何定义?

数组的遍历和初始化?

(1)数组是相同的数据类型在内存中连续存储的集合。

(2)数组的定义:

类型说明符 

数组名【常量表达式】

(3)数组的名字代表数组的首元素的地址。

(4)因为连续存储,数组的遍历可以使用下标的索引也可以使用首地址加偏移量。

数组作为函数的参数的传递方式是什么?

数组做为函数的参数按地址进行传递。

数组作为函数的参数应该注意什么?

(1)数组做为函数的参数,不对下标做检查,因此为了对边界的正确引用,有两种解决方案。

(2)标准库的规范。

传递指向数组的首地址和最后一个元素的下一个位置的指针。

数组中,数组的前一个位置是非法的,数组的后一个位置是合法的。

例:

voidprintValue(constint*begin,constint*end)

While(begin!

=end)

Cout<

*begin++<

(3)c规范和标准c++前的规范:

数组作为函数的参数传递两个参数,一个数组的首地址,一个数组的大小。

什么是vector?

(1)vector是标准库的类型,是同一种类型的集合,每个对象都有对应的整数的索引值。

vector和string一样,可以管理自身的内存,因此vector称作容器。

(2)vector是模版机制,因此定义需要指定存储的类型。

vector的定义和遍历初始化?

(1)vector定义的几种方式。

vector<

T>

v1;

v1空的容器。

v2(v1);

v2是v1的一个副本

v3(n,i) 

n个为i的值

v4(n) 

n个元素。

e. 

v5(begin,end) 

主要是数组元素的拷贝

vector对象的操作:

(1)v.empty():

如果V为空,返回true,否则返回false;

v.size() 

返回V元素的个数。

v.push_back(t) 

在V的末尾添加一个t的元素。

V[n] 

返回v中小标为n的元素。

V1=v2 

v1的元素替换为v2元素副本。

V1==v2 

v1和v2比较,判断是否相等。

(2)利用下标访问元素,但下标不能向容器添加元素。

(3)下标只能修改已经存在的元素或者访问已经存在的元素。

什么是迭代器?

(1)除了下标访问vector外,标准库提供了一种新的访问数据元素的方法:

iterator.迭代器是一种检查容器内元素并遍历容器内元素的的数据类型。

(2)标准库为每种容器都提供了iterator操作。

(3)iterator使用begin()和end()方式遍历元素:

begin()返回容器首元素的地址。

End()返回末元素的下一个地址。

(4)const_iterator该类型只能读取元素内的数据,不可以进行修改。

如何使用vector作为函数的参数?

(1)传递容器的两个地址:

(2)传递vector的引用或者指针。

指针的作用?

举例讲述?

(1)间接改变变量的值

(2)提高程序的效率。

指针如何定义?

(1)数据类型 

*指针变量名。

(2)用&

操作符取变量的地址。

(3)用*间接引用指针。

(4)指针只有在指向合法而且有效的内存空间下才可以使用。

指针变量作为函数的参数?

指针作为函数的返回值

intcompare(constchar*str1,constchar*str2)

for(;

*str1==*str2;

str1++,str2++)

if(*str1=='

\0'

return0;

return(*str1-*str2);

char*strcpy(char 

strDest,const 

char 

strSrc)

if 

((strDest==NULL)||(strSrc==NULL)) 

//[1]

throw 

Invalid 

argument(s)"

//[2]

strDestCopy=strDest;

//[3]

while 

((*strDest++=*strSrc++)!

='

//[4]strDest不能改为strDestCopy

return 

strDestCopy;

new和delete如何正确的使用?

(1)new与delete是C++语言特有的运算符,用于动态分配和释放内存。

(2)new用于为各种数据类型分配内存,并把分配到的内存首地址赋给相应的指针。

new的功能类似于malloc()函数。

使用new的格式为:

<

指针变量>

new<

数据类型>

其中,<

可以是基本数据类型,也可以是由基本类型派生出来的类型;

取得分配到的内存首地址。

(3) 

new有3种使用形式。

.给单个对象申请分配内存

int*ip;

ip=newint;

//ip指向1个未初始化的int型对象

该代码段首先定义了一个指向整型对象的指针,然后为该对象申请内存空间,如果申请成功,则ip指向一个int型对象的首地址。

给单个对象申请分配内存的同时初始化该对象

ip=newint(68);

//ip指向1个表示为68的int型对象

该代码段首先定义了一个指向整型对象的指针,然后为该对象申请内存空间,如果申请成功,则ip指向一个int型对象的首地址,并将该地址的内容初始化为68。

.同时给多个对象申请分配内存

ip=newint[5];

//ip指向5个未初始化的int型对象的首地址

ip[i]=5*i+1;

//给ip指向的5个对象赋值

该代码段首先定义了一个指向整型对象的指针,然后为5个int型对

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2