C++编程:解析数组与指针的等价表示

需积分: 38 102 下载量 12 浏览量 更新于2024-08-23 收藏 8.66MB PPT 举报
"谭浩强C++ ppt完整版" 在C++编程中,数组和指针是重要的概念,尤其是在处理字符串时。题目中的定义涉及到不同类型的数组和指针,让我们逐一解析它们。 1. `char s[3][5]={"aaaa","bbbb","cccc"};` 这是一个二维字符数组,包含3个大小为5的字符子数组(字符串)。每个子数组存储一个字符串,且由于字符串以空字符`\0`结束,所以实际存储的字符数量为4个。这样的定义允许字符串"aaaa"、"bbbb"和"cccc"分别存储在`s`的不同子数组中。 2. `char **s1={"aaaa","bbbb","cccc"};` 这是指向指针的指针,`s1`是一个指针,它指向的是一组字符指针。这些指针分别指向字符串常量,但这种定义在C++中并不标准,因为`"aaaa"`等是字符串字面量,通常存储在只读内存区域,赋值给`char **`会遇到问题,编译器可能不允许这样的赋值。 3. `char *s2[3]={"aaaa","bbbb","cccc"};` 这是一个字符指针数组,`s2`是一个包含3个元素的数组,每个元素都是一个字符指针,分别指向字符串"aaaa"、"bbbb"和"cccc"。这种定义是正确的,每个指针指向字符串字面量。 4. `char s3[][3]={"aaaa","bbbb","cccc"};` 这定义了一个变长二维数组,因为没有指定第二个维度的大小,编译器会根据初始化的字符串长度自动分配。在这里,每个子数组的大小为4(加上结束的`\0`字符),总共3个子数组。虽然定义的大小是3,但初始化时字符串"cccc"会占用4个位置,所以数组的实际大小为`s3[3][4]`。 5. `char s4[][4]={"aaaa","bbbb","cccc"};` 与`char s3[][3]`类似,这里数组的每一行都能容纳4个字符(包括结束的`\0`)。但由于每个字符串都超过4个字符,所以`"cccc"`无法正确初始化,编译器会抛出错误或警告,因为`"cccc"`的长度超过了数组的宽度。 C++语言发展自C语言,它增强了C语言的功能,包括面向对象编程、模板、异常处理等。C++语言的灵活性使得它广泛应用于系统编程、应用编程、游戏开发、图形用户界面等多个领域。C++中的数组和指针是基础,理解它们的关系和用法对于编写高效且可移植的代码至关重要。尽管C++的语法结构相对宽松,这为程序员提供了极大的自由度,但也增加了学习和调试的难度。因此,深入理解和熟练掌握C++中的数组和指针概念是每一个C++程序员的必修课。