相关疑难解决方法(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万
查看次数

在指针声明中放置星号

我最近决定我必须最终学习C/C++,有一件事我不太了解指针,或者更确切地说,他们的定义.

这些例子怎么样:

  1. int* test;
  2. int *test;
  3. int * test;
  4. int* test,test2;
  5. int *test,test2;
  6. int * test,test2;

现在,根据我的理解,前三个案例都是相同的:测试不是一个int,而是一个指针.

第二组示例有点棘手.在case 4中,test和test2都是指向int的指针,而在case 5中,只有test是指针,而test2是"real"int.案例6怎么样?案例5相同?

c c++ pointers declaration

86
推荐指数
8
解决办法
3万
查看次数

什么更有意义 - char*string或char*string?

可能重复:
在C中,为什么变量名前的星号,而不是类型之后?

我现在正在学习C++,而且我遇到了很多以空字符结尾的字符串.这让我思考,在声明指针时更有意义:

char* string
Run Code Online (Sandbox Code Playgroud)

要么

char *string
Run Code Online (Sandbox Code Playgroud)

?对我来说,char*格式更有意义,因为"string"的类型是指向char的指针,而不是char.但是,我通常会看到后一种格式.显然,这也适用于参考文献.

有人可以告诉我,后一种格式是否有合理的原因?

c++ string pointers

27
推荐指数
6
解决办法
7383
查看次数

指针和&符号在C++中用const表示

可能重复:
声明指针; 类型和名称之间的空格左侧或右侧的星号?

我一直想知道什么是正确的位置*&.似乎C++对于放置这些标记的位置非常宽容.例如,我似乎指针和符号放在关键字的左右两侧或两个关键字的中间,但有时令人困惑的是它们似乎意味着相同的东西,特别是当与const

void f1(structure_type const& parameter)
void f2(structure_type const &parameter)

void f2(structure_type  const *sptr);
void f2(structure_type  const* sptr);
void f2(structure_type  const * sptr);
Run Code Online (Sandbox Code Playgroud)

这些例子并非详尽无遗.我在声明或传递给函数时到处看到它们.他们甚至意味着同样的事情吗?但是我也看到了put的情况*会影响哪个对象被称为指针(可能*是两个关键字之间的情况).

编辑:

int const *Constant
int const * Constant // this above two seem the same to me, both as pointer to a constant value
int const* Constant //  EDIT: this one seems the same as above. instead of a constant pointer

const int * Constant …
Run Code Online (Sandbox Code Playgroud)

c++ pointers const

8
推荐指数
1
解决办法
3333
查看次数

*或&的位置是否重要?

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

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

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

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

c++ pointers

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

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

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

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

c++

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

`char **argv` 和 `char** argv` 有什么区别?

我有以下两个 C++main函数头:

int main(int argc, char **argv)

int main(int argc, char** argv)
Run Code Online (Sandbox Code Playgroud)

我知道星号*表示指针,但我不明白这两者之间的区别。我通常看到的是char **argv,如果我没记错的话,它声明argv为指向字符指针的指针。如果是这样,那么什么是char** argv

c++

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

什么是void*和void之间的区别*

可能重复:
在C中,为什么变量名前的星号,而不是类型之后?
宣告指针; 类型和名称之间的空格左侧或右侧的星号?

我已经使用指针一段时间,并用于声明像指针

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

但是通过一些代码注意到,在某些情况下*似乎是在数据类型之后,比如

void* setValue(){
 /*          */
}
Run Code Online (Sandbox Code Playgroud)

有什么区别以及为什么这样使用它

c++ pointers

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

声明指针的方式有什么区别?

这两种方式有什么变化呢?

int *ptrint* ptr

两者的工作方式相同,但是对于我的代码或性能,我的程序有差异吗?

#include <iostream>

using namespace std;

int main() {

    int a(5);
    int *ptr1 = &a;
    int* ptr2 = &a;

    cout << "a:    (0x" << hex << uppercase << (uintptr_t)&a << ") = " << dec << a << endl;
    cout << "ptr1: (0x" << hex << uppercase << (uintptr_t)ptr1 << ") = " << dec << *ptr1 << endl;
    cout << "ptr2: (0x" << hex << uppercase << (uintptr_t)ptr2 << ") = " << …
Run Code Online (Sandbox Code Playgroud)

c++ pointers declaration

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

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

char*a,char*a和char*a之间有区别吗?

我是新手,我正在审查一些代码.我遇到了这个:

static char * fromDataType;
static char * toDataType;
static char * fromRank;
static char * toRank;
static char * fromMethod;
static char * toMethod;
static char * fromAction;
static char * toAction;
Run Code Online (Sandbox Code Playgroud)

我在想,如果char* achar * achar *a一样的吗?

c

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