为什么大多数C程序员都将变量命名为:
int *myVariable;
Run Code Online (Sandbox Code Playgroud)
而不是像这样:
int* myVariable;
Run Code Online (Sandbox Code Playgroud)
两者都有效.在我看来,星号是类型的一部分,而不是变量名称的一部分.谁能解释这个逻辑?
我最近决定我必须最终学习C/C++,有一件事我不太了解指针,或者更确切地说,他们的定义.
这些例子怎么样:
int* test;int *test;int * test;int* test,test2;int *test,test2;int * test,test2;现在,根据我的理解,前三个案例都是相同的:测试不是一个int,而是一个指针.
第二组示例有点棘手.在case 4中,test和test2都是指向int的指针,而在case 5中,只有test是指针,而test2是"real"int.案例6怎么样?案例5相同?
可能重复:
在C中,为什么变量名前的星号,而不是类型之后?
我现在正在学习C++,而且我遇到了很多以空字符结尾的字符串.这让我思考,在声明指针时更有意义:
char* string
Run Code Online (Sandbox Code Playgroud)
要么
char *string
Run Code Online (Sandbox Code Playgroud)
?对我来说,char*格式更有意义,因为"string"的类型是指向char的指针,而不是char.但是,我通常会看到后一种格式.显然,这也适用于参考文献.
有人可以告诉我,后一种格式是否有合理的原因?
我一直想知道什么是正确的位置*和&.似乎C++对于放置这些标记的位置非常宽容.例如,我似乎指针和符号放在关键字的左右两侧或两个关键字的中间,但有时令人困惑的是它们似乎意味着相同的东西,特别是当与const
void f1(structure_type const& parameter)
void f2(structure_type const ¶meter)
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++中,我看到指针以不同的方式放置.例如,
char* ptr
char * ptr
char *ptr
Run Code Online (Sandbox Code Playgroud)
以上3个例子是否相同?(与&相同)
指针的语法从来没有对我有意义.我注意到这两个选项都适用于声明指针.我应该使用哪一个?
我有以下两个 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?
我已经使用指针一段时间,并用于声明像指针
int *x;
Run Code Online (Sandbox Code Playgroud)
但是通过一些代码注意到,在某些情况下*似乎是在数据类型之后,比如
void* setValue(){
/* */
}
Run Code Online (Sandbox Code Playgroud)
有什么区别以及为什么这样使用它
这两种方式有什么变化呢?
int *ptr和int* 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中,为什么变量名之前的星号,而不是类型之后?
什么更有意义 - char*string或char*string?
在Objective-C中声明对象的新实例时,在放置星号的位置有什么不同吗?
这仅仅是个人偏好的问题吗?
NSString* string = @"";
Run Code Online (Sandbox Code Playgroud)
与
NSString *string = @"";
Run Code Online (Sandbox Code Playgroud) 我是新手,我正在审查一些代码.我遇到了这个:
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* a和char * a和char *a一样的吗?
c++ ×8
pointers ×7
c ×3
declaration ×2
cocoa ×1
coding-style ×1
const ×1
ios ×1
objective-c ×1
string ×1
variables ×1