C++ 我能';我不理解静态指针的用途
我创建了一个具有行星三个属性的结构。然后,我创建了一个函数,它创建了一个新的星球——它是一个更大应用程序的一部分,但它只是一个函数,将函数参数分配给一些结构变量,然后返回结构 这实际上是一段代码,我正试图更好地理解它。我试图掌握指针和动态内存的概念C++ 我能';我不理解静态指针的用途,c++,C++,我创建了一个具有行星三个属性的结构。然后,我创建了一个函数,它创建了一个新的星球——它是一个更大应用程序的一部分,但它只是一个函数,将函数参数分配给一些结构变量,然后返回结构 这实际上是一段代码,我正试图更好地理解它。我试图掌握指针和动态内存的概念 #include <iostream> #include <string.h> using namespace std; typedef enum { NEPTUNE_LIKE, GAS_GIANT,
#include <iostream>
#include <string.h>
using namespace std;
typedef enum {
NEPTUNE_LIKE,
GAS_GIANT,
TERRESTRIAL,
SUPER_EARTH,
UNKNOWN
}PlanetType;
typedef struct {
char name[30];
PlanetType type;
float distanceToEarth;
}Planet;
Planet createPlanet(char myname[], PlanetType mytype, double mydistance)
{
Planet pl;
strcpy_s(pl.name, myname);
pl.type = mytype;
pl.distanceToEarth = mydistance;
return pl;
}
char* getName(Planet* p)
{
return p->name;
}
PlanetType getType(Planet* p)
{
return p->type;
}
double getDistance(Planet* p)
{
return p->distanceToEarth;
}
int main()
{
char s[30] = "Nume";
static Planet* pl = new Planet();
*pl = createPlanet(s, UNKNOWN, 345);
cout << getType(pl) << endl;
return 0;
}
#包括
#包括
使用名称空间std;
类型定义枚举{
像海王星一样,
天然气巨头,
陆地的
超级地球,
未知的
}飞机型号;
类型定义结构{
字符名[30];
平面型;
浮动距离到地球;
}行星;
Planet createPlanet(char myname[],PlanetType mytype,double mydistance)
{
行星pl;
strcpy_s(项目名称、我的姓名);
pl.type=mytype;
pl.distanceToEarth=我的距离;
返回损益;
}
char*getName(行星*p)
{
返回p->name;
}
PlanetType getType(行星*p)
{
返回p->type;
}
双倍距离(行星*p)
{
返回p->distanceToEarth;
}
int main()
{
char s[30]=“Nume”;
静态行星*pl=新行星();
*pl=创建行星(s,未知,345);
库特
static Planet*pl=new Planet()的目的是什么
Planet
是一个结构。new
返回指向类型的指针;在这里,您调用编译器生成的默认Planet
构造函数。new
为空的Planet
分配内存,并返回指向该内存的指针
如注释中所述,此处不需要使用static
,因为pl
永远不会返回到调用函数
怎么可能有一个指向整个函数的变量pl
<> p>你认为它在C++中有什么功能?
a = f();
表示执行f
,并返回分配给a
的值
我试图掌握指针和动态内存的概念
在游戏的这个阶段,我建议尝试解决你自己处理的问题,而不是动态内存。C++在使用值语义时更容易理解。在介绍指针时,你就有了一个全新的复杂程度。现在是时候用
new
和delete
卷起袖子了。到那时,你已经掌握了一些基本的语法,它就不会那么神秘了
我重写了你的程序,将Planet转换为一个类,并将只与Planet成员相关的函数作为成员函数移动到类中。我想你会同意它更简单、更短
#include <iostream>
#include <string>
using namespace std;
enum PlanetType {
NEPTUNE_LIKE,
GAS_GIANT,
TERRESTRIAL,
SUPER_EARTH,
UNKNOWN
};
class Planet {
private:
char name[30];
PlanetType type;
float distanceToEarth;
public:
Planet( const char myname[], PlanetType mytype, double mydistance ) {
strcpy(name, myname);
type = mytype;
distanceToEarth = mydistance;
}
const char * getName() const { return name; }
PlanetType getType() const { return type; }
double getDistance() const { return distanceToEarth; }
};
int main() {
Planet planet( "Nume", UNKNOWN, 345 );
cout << planet.getType() << endl;
return 0;
}
#包括
#包括
使用名称空间std;
枚举平面类型{
像海王星一样,
天然气巨头,
陆地的
超级地球,
未知的
};
类行星{
私人:
字符名[30];
平面型;
浮动距离到地球;
公众:
行星(常量字符myname[],PlanetType mytype,双mydistance){
strcpy(name,myname);
类型=mytype;
距离地球=我的距离;
}
const char*getName()const{return name;}
PlanetType getType()常量{返回类型;}
double getDistance()常量{返回distanceToEarth;}
};
int main(){
行星(“Nume”,未知,345);
你难道不想了解你在做什么吗?:)我甚至不认为pl
可以作为一个指针开始。而且,它不是“指向整个函数”,它指向一个Planet
对象。语法newplanet()
动态分配一个planet
对象并默认初始化它。pl
不指向函数。它指向一个planet
对象。main
的static
局部变量是无意义的,static
在这里没有任何效果。你似乎对某些事情很困惑,但我不知道e是什么编辑:你可能是混合C和C++资源。如果你在遵循教程,请确定它们是C++而不是C教程。尽量只使用至少在2011之后制作的资源。我也看不到你所拥有的全局函数的含义,或者为什么使用<代码> TyPulfF。请投资和学习构造函数和M。余烬函数。@Someprogrammerdude这是因为这是C,上面有std::cout
。“如果没有别有用心的话,它是过时的或不受欢迎的,或者充其量只是一厢情愿的传说。”这是我一整天听到的最出人意料的阴谋论。