相关疑难解决方法(0)

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

可能的重复:
什么更有意义 - 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万
查看次数

函数声明中的const关键字位置

可能重复:
C++中的const声明之间的差异

#include <iostream>

class Bar{};

void foo(const Bar x){}  //l5
void foo(Bar x){}        //l6
void foo(Bar const x){}  //l7

////pointer functions

void foo(const Bar* x){} //l11
void foo(Bar* x){}       //l12
void foo(Bar* const x){} //l13
Run Code Online (Sandbox Code Playgroud)

编译器输出:(长话短说l5,l6,l7冲突;但只l12,l13冲突)

untitled.cpp:6:6: error: redefinition of ‘void foo(Bar)’
untitled.cpp:5:6: error: ‘void foo(Bar)’ previously defined here
untitled.cpp:7:6: error: redefinition of ‘void foo(Bar)’
untitled.cpp:5:6: error: ‘void foo(Bar)’ previously defined here
untitled.cpp:13:6: error: redefinition of ‘void foo(Bar*)’
untitled.cpp:12:6: …
Run Code Online (Sandbox Code Playgroud)

c++ pointers const

7
推荐指数
1
解决办法
2815
查看次数

标签 统计

c++ ×2

pointers ×2

c ×1

const ×1