c++编程语言,第5.9章练习1

the c++ programming language, chapter 5.9 exercise 1

本文关键字:9章 练习 编程语言 c++      更新时间:2023-10-16

来自书本:

为以下内容编写声明:指向字符的指针、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;

"希望能有所帮助!

将其分解为多个步骤:

  1. 指向数组的指针:T (*p)[N]

  2. T = char const *给你:char const * (*p)[N]

  3. 我们用现有事物的地址初始化指针,所以首先制作一个数组:

    char const * arr[] = { "hello", "world" };

  4. 现在从(2)初始化家伙:char const * (*p)[2] = &arr;