相关疑难解决方法(0)

为什么变量名之前的星号,而不是类型之后?

为什么大多数C程序员都将变量命名为:

int *myVariable;
Run Code Online (Sandbox Code Playgroud)

而不是像这样:

int* myVariable;
Run Code Online (Sandbox Code Playgroud)

两者都有效.在我看来,星号是类型的一部分,而不是变量名称的一部分.谁能解释这个逻辑?

c variables pointers naming-conventions

177
推荐指数
10
解决办法
5万
查看次数

宣告指针; 类型和名称之间的空格左侧或右侧的星号?

可能的重复:
什么更有意义 - char*string或char*string? C++中的指针声明:星号的放置

我已经在很多代码中看到了这个的混合版本.(顺便说一下,这适用于C和C++.)人们似乎用两种方式之一来声明指针,我不知道哪一个是正确的,如果它甚至是重要的.

第一种方法是将星号放在类型名称旁边,如下所示:

someType* somePtr;
Run Code Online (Sandbox Code Playgroud)

第二种方法是将星号放在变量名称旁边,如下所示:

someType *somePtr;
Run Code Online (Sandbox Code Playgroud)

这已经让我疯了一段时间了.是否有任何标准方法来声明指针?甚至指针是如何声明的?我之前使用过两个声明,并且我知道编译器并不关心它是哪种方式.然而,事实上,我已经看到以两种不同的方式宣告指针,这让我相信它背后有一个原因.我很好奇,如果任何一种方法在某些方面更具可读性或逻辑性,那我就错过了.

c c++ pointers

116
推荐指数
5
解决办法
6万
查看次数

提升被认为有害吗?

这里有很多C++问题的答案包含响应:

"你应该使用boost::(在这里插入你最喜欢的智能指针)或者更好的提升:(在这里插入你最喜欢的超级复合增强型)"

我完全不相信这对提问者有任何好处,而提问者总的来说是明显的C++新手.我的理由如下:

  • 使用智能指针而不了解幕后发生的事情会导致一代C++程序员缺乏程序员的一些基本技能.这似乎已经发生在Java领域了.

  • 决定使用哪种类型的智能指针在很大程度上取决于要解决的问题域.从这里发布的问题中几乎总是缺少这一点,所以简单地说"使用共享指针"可能至少是无益的,可能是完全错误的.

  • Boost还不是C++标准的一部分,可能无法在提问者使用的特定平台上使用.安装它有点痛苦(我只是使用Jam),如果你想要的只是一些智能指针,那就太过分了.

  • 如果您正在编写FOSS代码,那么您不希望代码严重依赖外部库,而您的用户可能再也没有.由于库之间依赖关系的拜占庭复杂性,我在很多场合都被推迟使用FOSS代码.

总而言之,我并不是说不推荐Boost,而是在这样做时我们应该更加小心.

c++ boost

51
推荐指数
13
解决办法
9316
查看次数

在一行上声明多个对象指针会导致编译器错误

当我这样做(在我班上)

public:
    Entity()
    {
        re_sprite_eyes = new sf::Sprite();
        re_sprite_hair = new sf::Sprite();
        re_sprite_body = new sf::Sprite();
    }

private:
    sf::Sprite* re_sprite_hair;
    sf::Sprite* re_sprite_body;
    sf::Sprite* re_sprite_eyes;
Run Code Online (Sandbox Code Playgroud)

一切正常.但是,如果我将声明更改为:

private:
    sf::Sprite* re_sprite_hair, re_sprite_body, re_sprite_eyes;
Run Code Online (Sandbox Code Playgroud)

我得到这个编译器错误:

error: no match for 'operator=' in '((Entity*)this)->Entity::re_sprite_eyes = (operator new(272u), (<statement>, ((sf::Sprite*)<anonymous>)))
Run Code Online (Sandbox Code Playgroud)

然后它说候选人re_sprite_eyessf::Sprite对象和/或参考.

为什么这不起作用?声明不一样吗?

c++ oop sfml

21
推荐指数
3
解决办法
2万
查看次数

*或&的位置是否重要?

可能重复:
在C中,为什么变量名前面的星号,而不是类型后?
什么是您首选的指针声明样式,为什么?

在C++中,我看到指针以不同的方式放置.例如,

char* ptr
char * ptr
char *ptr
Run Code Online (Sandbox Code Playgroud)

以上3个例子是否相同?(与&相同)

c++ pointers

2
推荐指数
1
解决办法
581
查看次数

char * ft_name(args)是否等效于c中的char * ft_name(args)?

我是C语言的初学者,所以如果和函数原型char* ft_name(args)等效的话我有点困惑char *ft_name(args)

有人可以帮我吗

c function

2
推荐指数
1
解决办法
65
查看次数

int*指针与int*指针声明的指针

可能重复:
什么更有意义 - char*string或char*string?

指针的语法从来没有对我有意义.我注意到这两个选项都适用于声明指针.我应该使用哪一个?

c++

1
推荐指数
2
解决办法
3642
查看次数

正确的C指针表示法

哪一个是最好的写作方式:

string* str
Run Code Online (Sandbox Code Playgroud)

要么:

string *str
Run Code Online (Sandbox Code Playgroud)

其中一个有副作用的缺点吗?

谢谢

c c++ pointers coding-style

0
推荐指数
1
解决办法
1621
查看次数

-1
推荐指数
1
解决办法
1531
查看次数

使用单个deference运算符和double dereference运算符对变量有什么区别?

我对指针有一个基本的想法.有什么区别int *v;和之间int **v;有什么区别int* v;int *v;请告诉我.

c

-6
推荐指数
1
解决办法
84
查看次数