在这个问题,有人建议意见,我应该不会投的结果malloc
,即
int *sieve = malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)
而不是:
int *sieve = (int *) malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?
所以我正在经历一些面试问题,我遇到了一个关于void和null指针的问题,声称:
没有返回类型的指针称为空指针.它可以是任何类型的数据类型.
这彻底迷惑了我!它似乎无效,根据这个问题,null可以互换使用,我不相信这是正确的.我假设void是一个返回类型,null是一个值.但我只是一个代码新手,我不确定我是对的.
请表达您对空指针是什么以及空指针是什么的看法.我不是在寻找null和void之间的区别.
这个陈述是否正确?任何"TYPE"指针都可以指向任何其他类型吗?因为我相信,仍然有疑虑.
为什么为明确类型声明指针?例如int
还是char
?
我可以得到的一个解释是:如果一个int
类型指针指向一个char
数组,那么当指针递增时,指针将从0位置跳到2位置,跳过它们之间的1个位置(因为int size = 2).
也许是因为指针只保存值的地址,而不是值本身,即int
或double
.
我错了吗?这个陈述是否正确?
我知道你可以像这样声明一个没有任何参数的函数:
void test()
{
cout << "Hello world!!" << endl;
}
Run Code Online (Sandbox Code Playgroud)
但我也见过
void test(void)
{
cout << "Hello world!!" << endl;
}
Run Code Online (Sandbox Code Playgroud)
和
void test(void*)
{
cout << "Hello world!!" << endl;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是: usingvoid
和void*
here 有什么区别?
malloc
功能声明:
void *malloc(size_t size);
Run Code Online (Sandbox Code Playgroud)
在这里,malloc
返回void指针.那么,A void
函数什么都不返回呢
为什么我们将malloc(函数调用)值赋给指针?
例如:
int *ptr;
ptr = malloc(10 * sizeof (*ptr));
^^^
Run Code Online (Sandbox Code Playgroud)
什么是返回值来自malloc()
???
在 C++ 中,需要提及指针的类型。例如,
int a = 5;
int * p = &a;
Run Code Online (Sandbox Code Playgroud)
这里,'int *' 中的'int' 是必要的。我发现的原因是它需要取消引用。(知道要读取的字节数及其解释)和指针算术。
但是,如果我写:-
int a = 5;
char * p = &a;
float * p2 = &a;
//etc
Run Code Online (Sandbox Code Playgroud)
显示错误,说明无法将 char*、float* 等指针分配给 int 变量。好的..,所以编译器知道我想要指针的变量类型。这与普通变量不同,在普通变量中,编译器并不确切知道我想要哪种类型。例如:-
int a = 5;
float b = 5;
double c = 5;
long d = 5;
char e = 5;
Run Code Online (Sandbox Code Playgroud)
所有这些都很好。我需要在这里写类型,因为编译器不知道我想要哪种类型,因为所有这些都可以工作。
但是,在指针的情况下,它知道我要为其声明指针的变量的确切类型。
即使我使用显式类型转换,我仍然会以某种方式告诉我需要的指针类型,并且仍然必须指定正确的指针类型。
int a = 5;
char * b = (char*)&a;//This would work.
//However this,
int …
Run Code Online (Sandbox Code Playgroud) c++ ×4
pointers ×3
c ×2
malloc ×2
void ×2
c++-concepts ×1
calloc ×1
casting ×1
dereference ×1
function ×1
null-pointer ×1
syntax ×1