C++编程:数组与指针的理解

需积分: 10 10 下载量 127 浏览量 更新于2024-08-23 收藏 8.66MB PPT 举报
"这篇资源是谭浩强教授关于C++面向对象程序设计的教学PPT,主要探讨了C++语言的基本概念、发展历程以及与C语言的关系。同时,它提出了一个编程问题,即如何理解和比较几种不同的字符数组初始化方式。" 文章详细内容: C++语言起源于C语言,由Dennis Ritchie和Brian Kernighan在20世纪70年代初的贝尔实验室设计,最初用于构建UNIX操作系统。C++进一步扩展了C语言的功能,引入了面向对象编程的概念,使其成为一种更为强大和通用的编程工具。C++的设计理念在于保持C语言的高效性和灵活性,同时增加类、模板、异常处理等面向对象的特性。 C++语言有以下几个显著特点: 1. 结构化编程:C++是一种结构化语言,它的简洁性和灵活性使得它可以处理大型项目,同时也适用于小型任务。 2. 高级与低级结合:C++提供了丰富的运算符,包括位运算,结合了高级语言和汇编语言的优点。 3. 可移植性:用C++编写的程序可以在不同类型的计算机上轻松移植,无需或只需少量修改。 4. 强大的表达力:C++支持灵活的数据结构,可以编写出功能强大的程序。 5. 自由度高:C++的语法结构相对宽松,允许程序员有很大的设计自由,但也增加了学习和调试的难度。 回到题目中的编程问题,我们来分析一下几种字符数组的声明和初始化: 1. `char s[3][5]={"aaaa","bbbb","cccc"};` 这是一个二维字符数组,可以存储3个长度为4的字符串(加终止符'\0')。 2. `char **s1={"aaaa","bbbb","cccc"};` 这是一个指向指针的指针,实际上是一个字符串数组的地址,而不是直接的字符数组。 3. `char *s2[3]={"aaaa","bbbb","cccc"};` 这是一个字符指针数组,每个元素都是一个指向字符串的指针,与s1不同的是,它更直接地表示了字符串数组。 4. `char s3[][3]={"aaaa","bbbb","cccc"};` 这也是一个二维字符数组,但是没有指定第二维的大小,编译器会根据初始化值自动推断为4,与s相同。 5. `char s4[][4]={"aaaa","bbbb","cccc"};` 与s3类似,但是明确指定了第二维为4,这样可以准确存储每个字符串。 这道题目考察的是对C++中字符数组和指针的理解,以及它们在初始化时的不同表示方式。理解这些差异对于编写和调试C++代码至关重要。