- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
#include<stdio.h>
#include<stdlib.h>
void function(void *i, void *j);
struct mystruct {
int a;
int b;
} ;
int main()
{
int a = 50;
struct mystruct s ;
s.a = 100;
s.b = 200;
function(&a, &s);
}
void function(void *i, void *j)
{
printf("Integer is %d\n", *i);
printf("Struct member 1 is %d\n", j->a);
printf("Struct member 2 is %d\n", j->b);
}
我上面的代码。在编译时我得到以下错误,我明白我需要做什么来修复它们。
voidstartest.c: In function function:
voidstartest.c:27: warning: dereferencing void * pointer
voidstartest.c:27: error: invalid use of void expression
voidstartest.c:28: warning: dereferencing void * pointer
voidstartest.c:28: error: request for member a in something not a structure or union
voidstartest.c:29: warning: dereferencing void * pointer
voidstartest.c:29: error: request for member b in something not a structure or union
这是我需要做的来修复错误:
printf("Integer is %d\n", *(int*)i);
printf("Struct member 1 is %d\n", ((struct mystruct *)j)->a);
printf("Struct member 2 is %d\n", ((struct mystruct *)j)->b);
问题:
如果我必须按照上面描述的方式修复错误,这是否意味着我必须提前知道我发送给函数的指针类型?我觉得这是一个非常严格的要求。不是吗?
一些库函数也有形式参数 void *(如 qsort)。他们的实现如何知道指针的正确类型是什么,以便他们可以取消引用它以处理实际数据(它指向)?
最佳答案
是的。这意味着您不能以类型不可知的方式编写函数,因此需要重新考虑您的设计。在使用 void*
时,通常会编写一个模板函数,并向用户询问函数指针,这些函数指向可识别类型并执行基本操作的函数。
他们的实现没有。他们还以我上面描述的相同方式要求您提供函数指针或大小参数。
关于c - void * 函数形式参数的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591436/
views.py from django.shortcuts import render from basic_app.forms import UserForm,UserProfileInfoFor
我已经将一个程序从 R 翻译成 C++。有问题的程序使用不同的值运行自身的多次迭代,然后生成直方图和绘图。 C++ 图形很挑剔,所以我决定将值保存为 csv 格式并在 R 中绘制它们。文件相当大,对于
假设我们有一个符号,有一个符号值、一个函数值和一个属性列表,我们称它为 q .假设我们有一个函数 f带形参v ,例如(f (v) ... )并调用像 (f q) 这样的函数. 我的问题是:到底传递给
当我在 R 中运行以下代码时, library(mclust) data(iris) mc <- Mclust(iris[,1:4], 3) plot(mc, data=iris[,1:4], wha
我是一名优秀的程序员,十分优秀!