VC++ 第2章 C++语言对C语言的扩充
- 格式:ppt
- 大小:601.50 KB
- 文档页数:67


1.对齐
__alignof__操作符返回数据类型或指定数据项的分界对齐(boundary alignment).
如: __alignof__(long long);
2.匿名联合
在结构中,可以声明某个联合⽽不是指出名字,这样可以直接使⽤联合的成员,就好像它们是结构中的成员⼀样。
例如:
struct {
char code;
union {
chid[4];
int unmid;
};
char* name;
} morx;
可以使⽤morx.code, morx.chid, morx.numid和访问;
3.变长数组
数组的⼤⼩可以为动态值,在运⾏时指定尺⼨.
例如:
void add_str(const char* str1, const char* str2)
{
char out_str[strlen(str1)+strlen(str2)+2];
strcpy(out_str, str1);
strcat(out_str, " ");
strcat(out_str, str2);
printf("%s\n", out_str);
}
变长数组也可作为函数参数传递。
如:
void fill_array(int len, char str[len])
{
...
}
4.零长度数组
允许创建长度为零的数组,⽤于创建变长结构.只有当零长度数组是结构体的最后⼀个成员
的时候,才有意义.
例如:
typedef struct {
int size;
char str[0];
}vlen;
printf("sizeof(vlen)=%d\n", sizeof(vlen)), 结果是sizeof(vlen)=4 .
也可以将数组定义成未完成类型也能实现同样功能.
例如:
typedef struct {
int size;
char str[];
}vlen;
vlen initvlen = {4, {’a’, ’b’, ’c’, ’d’}};
(完整word)VC++ VB和C语言三者之间的相互关系和不同
详解一:VC++和VB,还有C语言有的区别与联系
初学者经常提出这样的问题:是学c++好还是学 Visual c++好?
其实,这是个很奇怪的问法,就好像在问:是学开车好还是学开福特车好?开车是一种普遍的技术,用这个技术可以控制福特车或奥迪车,这在技术上没有很大的差别,最多只是一些开关的位置不同而已。同样的道理,c++是一种程序语言,现在已经成为ISO标准,是一种普遍的技术。Visual c++只是一种协助用户使用c++语言设计软件的工具。
类似的工具还有很多,例如Borland c++ Builder,设置还有免费的GNU c++,他们都是协助用户使用c++设计软件的工具。
VC是一种功能非常强大的技术。在Windows下,VC几乎无所不能.但每个工具都有所长短。这里只列举最实用、最热门的一些应用.
VC可以写WEB上的控件:Web控件大家相对不会陌生.各种流氓插件也是属于其中一种。现在Web控件开发非常火暴.各行各业都存在各式各样的控件。例如,百度的搜霸,银行的各种安全控件。
VC可以开发优秀的基于通信的程序:现在网络发展,各种通信控件比比皆是。例如,大家使用聊天工具、BT下载工具、视频点播工具之类.这也是现在网络应用的热点。
VC可以开发高效灵活的文件操作程序:这类包括各种文件管理器和网络U盘的后台系统。
VC是编CAD软件的唯一选择!!!包括AUTOCAD,UG的二次开发:这两年国产CAD飞速发展,VC的功劳不可抹杀。
VC开发各种游戏:游戏开发一直是国家提倡的产业。游戏开发的首选工具就是VC。
虽然VC属于一个传统编程语言,但实际岗位还是非常巨大。每年的人才需求量不比网站开发少。而待遇往往比网站开发的高.无论从应用角度,还是工作角度,学习VC的价值是非常有前途的。
很多人都说VC太难学。这是由于VC的体系非常大,涉及系统的内核。但是,实际应用不可能用到所有的内容.所以,学习时候,一定要有选择的学习。学习VC,通常需要遵循以下流程。
C只是C;而C++可以是better C,可以是ADT,可以是OO,可以是generic。
但从另一方面来说,C是everything;0/1生机器语言,机器语言生汇编语言,汇编语言生C,C生万物。
------------------------------
其实是数据类型的扩充,即加入了class 这样的数据类型,改变了整个编程的思路,一个面向对象,一个面向过程,随之而来的是封装,重用等的考量。
------------------------------
C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。
所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。
对语言本身而言,C是C++的子集,那么是什么样的一个子集?从上文可以看出, C实现了C++中过程化控制及其它相关功能,而在C++中的C(我称它为“C+”),相对于原来的C还有所加强,引入了重载、内联函数、异常处理等等玩艺儿,C++更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和包容器类等等。
再提高一点,在C++中,数据封装、类型这些东东已不是什么新鲜事了,需要考虑的是诸如:对象粒度的选择、对象接口的设计和继承、组合与继承的使用等等问题。
所以相对于C,C++包含了更丰富的“设计”的概念,但C是C++的一个自洽子集,也具有强大的功能,同样值得学习。
第18卷第3期 2008年6月 长春大学学报 J0URNAL OF CHANGCHUN UNⅣERSⅡY V01.18 No.3 June 2008
文章编号:1009—3907(2008)03—0061—03
VC++6.0调试方法在C语言程序设计教学中的应用
宋雅娟,边晶
(长春大学计算机科学技术学院,吉林长春130022)
摘要:介绍了VC++6.0集成工具中的调试工具Memory,watch等,并对如何使用此类工具辅助
C语言程序设计课程教学进行了阐述,为在信息技术下提高计算机课程教学质量提供了一种可行
的方法。 关键词:VC++6.0;调试工具;内存;C语言
中图分类号:TP312文献标识码:A
随着信息技术的迅速发展和计算机技术的普及,多媒体教学已作为一种先进的教学手段,进入了大学计 算机课程教学课堂。多媒体教学的形式多种多样,从电子课件到网络课件及虚拟实验等不一而同,主要的目 的都是为了提高教育质量,使学生能够容易掌握课程内容。在计算机C语言程序设计课程教学中,有很多
内容比较抽象,不容易被学生所理解,如果有一种方法使学生能够直观地看到底层所表现的内容,那么对课 程的理解将会容易许多,笔者在计算机C语言程序设计的教学中,多次应用Microsoft Visual C++6.0的调 试方法对课程所涉及的底层内容进行直观展示,很好地帮助了学生对课程内容的深入理解。
1 VC++6.0介绍
1.1 VC++6.0特点 可视化与面向对象的编程技术是当今世界流行的编程技术,在众多的开发工具中,Microsoft公司的 VC++独树一帜,深得广大程序员的青睐。VC的执行速度和对操作系统的访问的权限之高,是其他许多语 言难以比拟的,加之Windows操作系统的支持,就使得VC的高级程序员对整个计算机的硬件系统和软件系
统在各个方面的访问和控制更加游刃有余。正如一位学者所说:“用VC的眼光看,整个计算机都是透明的, 或者说是完全裸露的。”