c++编程语言,第5.9章练习1
the c++ programming language, chapter 5.9 exercise 1
来自书本:
为以下内容编写声明:指向字符的指针、10个整数的数组,对10个整数数组的引用,a指向字符串数组的指针,指向字符、常量整数、指向常量整数的指针和指向整数的常量指针。初始化每个。
我被"指向字符串数组的指针"弄糊涂了。Stroustrup想要什么?这是字面意思吗?用哪种方式?
直接而简单的解决方案:
char* c[] = {"foo", "bar", "baz"};
char** c_ptr;
或者这个:
typedef char carray[20];
typedef array* carray_ptr;
carray_ptr ptr = new carray[10];
你觉得怎么样?(好吧,指针对指针不是很直。)
有了这些类型的声明测试,通常最容易使用cdecl
这样的工具。我认为在这种情况下,这本书正在寻找的是:
c
是一个指针:
*c
到阵列:
(*c)[]
字符串数:
char *(*c)[]
或来自cdecl
:
cdecl> declare c as pointer to array of pointer to char
char *(*c)[]
我只是猜测了这本书的预期,但由于下一个请求是"指向角色的指针",所以两人问同样的问题会很奇怪。
typedef char* character_string;
typedef character_string[20] array_of_character_strings;
typedef array_of_character_strings* pointer_to_array_of_character_strings;
pointer_to_array_of_character_strings ptr; //done
或:
char*(*var)[20];
显示在:cdecl.ridiculousfish.com,"将var声明为指向char的指针的数组20的指针"
1)第5章是关于"指针、数组和结构"的。我没有看到任何"typedef"略读这一章,所以我不会在这个练习中使用它们。
2) 可以将"argv"作为"指向字符串数组的指针"的一个很好的例子:
int main (int argc, char *argv[])
3) 第一个示例中的"c_ptr"肯定会起作用(尽管可能是一个更好的名称可能是"c_pp";):
char* c[] = {"foo", "bar", "baz"};
char** c_ptr = c;
"希望能有所帮助!
将其分解为多个步骤:
-
指向数组的指针:
T (*p)[N]
-
T = char const *
给你:char const * (*p)[N]
-
我们用现有事物的地址初始化指针,所以首先制作一个数组:
char const * arr[] = { "hello", "world" };
-
现在从(2)初始化家伙:
char const * (*p)[2] = &arr;
相关文章:
- 加速C++练习2.4
- C++ 独特指针练习的向量
- 转换器练习:跳过 if 语句和 if 语句
- 节目练习直播C++
- 所以我正在为我的学校作业练习继承,但我无法正确实施标题保护
- 你好世界在 APUE 第 7 章退出,代码为 0
- 我正在尝试一个傻瓜 C++ 练习,我遇到了一个错误,说类 'GraduateStudent' 没有任何名为 'advisor' 的字段
- 练习多线程
- 返回不停止函数,递归函数问题?(编程练习,动态规划,Levenshtein 回溯)
- C++ 随机数的字符串练习
- C 编程原理和练习第7章练习4 symber_table :: get_value始终显示错误未定义
- 斯特劳斯特鲁普 第四章 练习 11.
- C++入门加第 2 章练习 3
- 斯特劳斯特鲁普 第 4 章 练习 6:提高效率
- 来自 Stroustrup PPP 的伪随机数生成器,使用 C++,第 8 章,练习 8 和 9
- C++初级读本+第6章练习2输入理解
- c++初级读本第3章练习3.20矢量过流
- 跳到C++第13章练习问题4-指针
- c++编程语言,第5.9章练习1
- c++编程原理与实践第4章练习1