C++ C++;:声明指向类中数组的指针?
我对下面这个问题的老师解决方案有点困惑 我认为,当您声明指针变量,然后设置为数组时,您可以执行以下操作:C++ C++;:声明指向类中数组的指针?,c++,arrays,pointers,C++,Arrays,Pointers,我对下面这个问题的老师解决方案有点困惑 我认为,当您声明指针变量,然后设置为数组时,您可以执行以下操作: char *myPointer; 然后在构造器中,你可以做一些 myPointer = new char[20]; 为什么要将char*symbol[20]声明为类成员变量? 这到底是什么意思?如果它是一个静态数组,为什么不直接声明char符号[20] 问题与解决办法 假设一个股票类有符号(char*)、成本(int)和股票(int)作为私有成员。 编写支持的最小库存类声明 股票s2(
char *myPointer;
然后在构造器中,你可以做一些
myPointer = new char[20];
为什么要将char*symbol[20]声明为类成员变量?
这到底是什么意思?如果它是一个静态数组,为什么不直接声明char符号[20]
问题与解决办法
假设一个股票类有符号(char*)、成本(int)和股票(int)作为私有成员。
编写支持的最小库存类声明
股票s2(“APPL”,209,7),s3(“FB”,80);//APPL 7股209美元,FB 5股80美元
>
>
编写上述声明的实现函数
stock::stock(char *s, int c, int sh) {
strcpy(symbol, s); // or other means of deep copy, no point if no deep copy
cost = c;
shares = s;
}
`````````````````````
你完全正确,没有必要让
symbol
成为指向字符的指针数组。您正在传入一个字符串(如“APPL”),它是一个数组字符,因此symbol
应该是char
的数组,而不是char*
的数组
char*symbol[20]
的意思是一个由20个字符串组成的数组,其中数组中的每个指针都可能指向char
数组的开头
你真正应该使用的是
std::string
,但是如果你的老师还没有涉及到这一点,那么只要char-symbol[20]
就可以了。你完全正确,没有必要让symbol
成为一个指向字符的指针数组。您正在传入一个字符串(如“APPL”),它是一个数组字符,因此symbol
应该是char
的数组,而不是char*
的数组
char*symbol[20]
的意思是一个由20个字符串组成的数组,其中数组中的每个指针都可能指向char
数组的开头
您真正应该使用的是std::string
,但是如果您的老师还没有涵盖这一点,那么只使用charsymbol[20]
就可以了
[char*symbol[20]
]的确切含义是什么
它意味着一个包含20个指向char
的指针的数组
为什么要将[that]声明为类成员变量
一般来说:当一个类需要有20个可以通过索引访问的指针时,可以声明它。这就是数组的用途
在出现特定问题的情况下:使用20个指针的数组来引用单个字符串是毫无意义的
如果是静态数组
它不是“静态的”。它是一个(非静态)成员变量
为什么不直接声明字符符号[20]代码>
一般来说:因为字符数组与指针数组完全不同。一个可以用20个指针解决的问题如何能用20个字符轻松解决,现在还不清楚
对于特定的问题:这比指针数组更有意义。它确实有一个缺点,即大小限制为20个字符,因此在实践中没有用处,但在练习的范围内,就足够了。对于实际用例,std::string
会更好,因为它不限于任意长度
简而言之:在给定的类中可能有一个bug
[char*symbol[20]
]的确切含义是什么
它意味着一个包含20个指向char
的指针的数组
为什么要将[that]声明为类成员变量
一般来说:当一个类需要有20个可以通过索引访问的指针时,可以声明它。这就是数组的用途
在出现特定问题的情况下:使用20个指针的数组来引用单个字符串是毫无意义的
如果是静态数组
它不是“静态的”。它是一个(非静态)成员变量
为什么不直接声明字符符号[20]代码>
一般来说:因为字符数组与指针数组完全不同。一个可以用20个指针解决的问题如何能用20个字符轻松解决,现在还不清楚
对于特定的问题:这比指针数组更有意义。它确实有一个缺点,即大小限制为20个字符,因此在实践中没有用处,但在练习的范围内,就足够了。对于实际用例,std::string
会更好,因为它不限于任意长度
简而言之:在给定的类中可能有一个bug。不应该编译
char*symbol[20]
将是一个由二十个指针组成的数组。这不是您在本场景中想要的。它是一个char*
数组,而不是char
数组。然而,描述听起来似乎并不是老师真正想要的。不过,这不是一个要问我们的问题。你应该问你的老师,那不应该char*symbol[20]
将是一个由二十个指针组成的数组。这不是您在本场景中想要的。它是一个char*
数组,而不是char
数组。然而,描述听起来似乎并不是老师真正想要的。不过,这不是一个要问我们的问题。你应该问问你的老师。从“编写支持stock s2(“APPL”,209,7),s3(“FB”,80)
”的最小stock类声明”这句话来看,我认为他们只想在stock
类中保留一个字符串,而不是二十个字符串。@0x499602D2很公平。根据“编写支持stock s2(“APPL”,209,7),s3(“FB”,80)
”的最小股票类声明”这句话判断,“我认为他们只想在stock
类中保留一个字符串,而不是二十个字符串。@0x499602D2很公平。”。据此编辑。
stock::stock(char *s, int c, int sh) {
strcpy(symbol, s); // or other means of deep copy, no point if no deep copy
cost = c;
shares = s;
}
`````````````````````