我最近决定我必须最终学习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++中,以下表示"为int指针分配内存":
int* number;
Run Code Online (Sandbox Code Playgroud)
因此,星号是变量类型的一部分; 没有它,这意味着"为int分配内存".
那么,如果以下意思是"为两个int指针分配内存",那会不会更有意义?
int* number1, number2;
Run Code Online (Sandbox Code Playgroud) 我正在将用C编写的DLL的头文件转换为Delphi,因此我可以使用DLL.
我的问题是有什么区别
int* i
Run Code Online (Sandbox Code Playgroud)
和
int *i
Run Code Online (Sandbox Code Playgroud)
我将第一个转换为
i: PInteger;
Run Code Online (Sandbox Code Playgroud)
但我不确定Delphi中第二个转换的正确转换.
从我的理解,第一个是一个简单的类型指针.第二个是指针变量.但我不确定区别是什么.
我知道这是一个初学者的问题,但是我不明白它是如何工作的,我发现在每个来源上我都看到了一种不同的方法来做同样的事情,而且我不理解在c中构建函数的这些方法之间的区别。返回一个字符串。
发生什么情况:
我在返回类型后写星号吗?
char* my_function(){...}
Run Code Online (Sandbox Code Playgroud)
如果在函数名称前写星号怎么办?
char *my_function(){...}
Run Code Online (Sandbox Code Playgroud)
两者之间的星号是什么?
char * my_function(){...}
Run Code Online (Sandbox Code Playgroud)
2星号是什么意思?
char **my_function(){...}
Run Code Online (Sandbox Code Playgroud)
是的,下一个代码将编译:
char* * **my_function(){...}
Run Code Online (Sandbox Code Playgroud)
或者...他们都是同一件事吗?