相关疑难解决方法(0)

我是否施放了malloc的结果?

这个问题,有人建议意见,我应该不会投的结果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)

为什么会这样呢?

c malloc casting

2318
推荐指数
27
解决办法
22万
查看次数

什么是void指针,什么是空指针?

所以我正在经历一些面试问题,我遇到了一个关于void和null指针的问题,声称:

没有返回类型的指针称为空指针.它可以是任何类型的数据类型.

这彻底迷惑了我!它似乎无效,根据这个问题,null可以互换使用,我不相信这是正确的.我假设void是一个返回类型,null是一个值.但我只是一个代码新手,我不确定我是对的.

请表达您对空指针是什么以及空指针是什么的看法.我不是在寻找null和void之间的区别.

c++ pointers void-pointers null-pointer

38
推荐指数
5
解决办法
3万
查看次数

任何类型的指针都可以指向任何东西?

这个陈述是否正确?任何"TYPE"指针都可以指向任何其他类型吗?因为我相信,仍然有疑虑.

为什么为明确类型声明指针?例如int还是char

我可以得到的一个解释是:如果一个int类型指针指向一个char数组,那么当指针递增时,指针将从0位置跳到2位置,跳过它们之间的1个位置(因为int size = 2).

也许是因为指针只保存值的地址,而不是值本身,即intdouble.

我错了吗?这个陈述是否正确?

c++ pointers

5
推荐指数
2
解决办法
4399
查看次数

具有 0 个参数的函数 - void vs void*?

我知道你可以像这样声明一个没有任何参数的函数:

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)

我的问题是: usingvoidvoid*here 有什么区别?

c++ syntax void function-declaration function-definition

5
推荐指数
2
解决办法
240
查看次数

关于C中malloc和calloc函数的困惑

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 malloc function void calloc

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

在 C++ 中,为什么需要提及指针的类型?

在 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++ pointers dereference c++-concepts

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