相关疑难解决方法(0)

void*意味着什么以及如何使用它?

今天当我阅读别人的代码时,我看到了类似的void *func(void* i);东西,这void*对于函数名称和变量类型分别意味着什么?

另外,什么时候需要使用这种指针以及如何使用它?

c

134
推荐指数
4
解决办法
15万
查看次数

在现代C和C++中不推荐使用f(void)

我目前正在重构/整理C++项目中使用的一些旧C代码,并定期查看以下函数:

int f(void)
Run Code Online (Sandbox Code Playgroud)

我倾向于写作:

int f()
Run Code Online (Sandbox Code Playgroud)

是否有任何理由不在整个代码库中用()替换(void)以提高一致性,或者两者之间是否存在我不知道的细微差别?更具体地说,如果C++中的虚拟成员函数被描述为:

virtual int f(void)
Run Code Online (Sandbox Code Playgroud)

派生类包括成员函数:

int f()
Run Code Online (Sandbox Code Playgroud)

这是一个有效的覆盖?另外,基于几乎相同的签名,我是否可能遇到任何链接器问题?

c c++ refactoring void

67
推荐指数
3
解决办法
1万
查看次数

将指针强制转换为Array(int*to int [2])

如何将int*转换或转换为int [x]?

作为一个例子,我试图将指针int* c = new int[x]转换为数组int b[2]

int a    = 1;
int b[2] = { 2, 3 };
int* c   = new int[b[1]];

c[0] = b[0];
c[1] = b[1];
c[2] = a;
Run Code Online (Sandbox Code Playgroud)

首先,我知道我可以遍历指针和数组.因此,将指针转换为具有[]运算符的数组,以索引指针和数组,在迭代时将指针元素分配给数组元素(例如arr[i] = p[i]).我想知道在更少的代码行中是否可以实现相同的结果.

我试图自己搞清楚,所以我做了一个快速的程序,以确保我确切地知道我想要放置什么和在哪里.输出如下:

Address of {type: int} &a =             0031FEF4; a = 1
Address of {type: int[2]} &b =          0031FEE4; b = 0031FEE4
Address of {type: int[2]} &b[0] =       0031FEE4; b[0] = 2
Address of {type: int[2]} …
Run Code Online (Sandbox Code Playgroud)

c++ arrays pointers

22
推荐指数
1
解决办法
5万
查看次数

(void)var实际上做了什么?

请考虑以下事项main():

int main(int argc, char *argv[])
{
    return (0);
}
Run Code Online (Sandbox Code Playgroud)

在编译时cc -Wall -Wextra,会生成警告"未使用的参数".

当我不需要在函数中使用参数时(例如在不使用其参数的信号处理函数int),我习惯于执行以下操作:

  int main(int argc, char *argv[])
  {
      (void)argc;
      (void)argv;
      return (0);
  }
Run Code Online (Sandbox Code Playgroud)

(对于特定的main(),我有时看到别人做的:argv = argv - argc + argc)

但是,是什么(void)var真正

我明白这(void)是一个演员,所以我想我正在抛弃变量?什么是var;线(不投)呢?这是一个空任务,一个空表达式?

我想了解实际发生了什么.

c void c89

15
推荐指数
2
解决办法
4669
查看次数

foo(void)与foo(void *)

从功能和语法上来说,原型为int foo(void)和的函数之间是否有区别int foo(void *)

我知道,例如之间的差异,int bar(int)以及int bar(int *)-其中之一是寻找一个int,另一种是找一个int指针。void行为是否相同?

c c++ function-prototypes

9
推荐指数
2
解决办法
170
查看次数

'void'是函数的有效返回值吗?

private void SaveMoney(string id...)
{
    ...
}

public void DoSthWithMoney(string action,string id...)
{
    if(action=="save") return SaveMoney(string id);
    ...
}
Run Code Online (Sandbox Code Playgroud)

为什么C#不允许我通过公共函数返回私有函数的空白?它甚至是相同的数据类型"无效"......

或者数据类型是否无效?

以下代码真的是最短的解决方法吗?

if(action=="save") {
    SaveMoney(string id);
    return;
}
Run Code Online (Sandbox Code Playgroud)

c# return void

7
推荐指数
2
解决办法
4019
查看次数

将void**指针转换为等效的Java类型

我正在用Java编写的程序加载一个C DLL.我希望能够使用此声明从DLL中调用其中一个方法:

dll_function(const char* foo1, const char* foo2, const char* foo3, void** bar, size_t* bar2);
Run Code Online (Sandbox Code Playgroud)

如何在Java中使用正确类型的参数调用此方法?我知道(理论上)如何调用它,但我想知道的是如何从我的Java程序中传递"void**"和"size_t*"?基本上,我想知道什么是void和size_t***的"等效类型" 在Java中 ...

我找到了Pointer类,但没有设法让它工作?非常感谢 :)

java dll types pointers

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

C#中'void'的真正含义是什么?

我正在研究voidC#中的类型定义.它是一个空结构,代表无价值.

但是,这种结构与其他结构之间究竟有什么区别.我的意思是如果你定义一个返回类型为void的方法,那么return typeOf(void)你将得到一个错误.

看来C#对这种类型有不同的行为.

有一些关于void真实情况的文件.我的意思是幕后发生了什么.值类型结构怎么能指的是什么?

更新:

我认为你们中的一些人没有明白这个问题,这就是为什么你把它标记为重复的原因.我的问题是.虚空是一种结构.好 ?..结构是价值类型.在可能的最低阶段会发生什么?什么空虚代表在记忆中?这个结构和其他结构之间有什么区别,如果你按空格键F12,你只看到一个空结构?哪个c#有这个区别?

c# null structure return-type void

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

c ++ boost模板类型和非类型

template <class Target>
struct unwrap_predicate<void (Target)>
{
    typedef is_convertible<mpl::_, Target> type;
};
Run Code Online (Sandbox Code Playgroud)

这是来自Boost库的整个程序的一段代码,请参阅:http://www.boost.org/doc/libs/release/boost/parameter/preprocessor.hpp

我不明白Target.Class旁边的第一个Target.这是一个类型参数.第二个void(Target)看起来像我的非类型参数.一个参数如何作为类型和非类型.我对这两行感到困惑.有人可以帮忙吗?

c++ templates boost

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

Argument type 'void' is incomplete

我正在尝试编写此相对简单的代码,希望在其中更改set_current的值。错误消息:“参数类型'void'不完整”不断出现,我不确定为什么。

我不是一个经验丰富的编码员,但是我必须解决此问题才能上班。我真的希望你能帮助我。

void setCurrent(float set_current);

int main () { 
    printf("%i", setCurrent(0));
    printf("/n/r");
}

void setCurrent(float set_current){
    float v_set_cur = 1.25 + (ILIM_K_USE*set_current);
Run Code Online (Sandbox Code Playgroud)

在printf行上显示“参数类型'void'不完整”。当我删除0时,它可以工作,但我希望能够更改该数字。我在这里想念什么?

c c++ void incomplete-type

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