嗨,我在"用c ++测试你的技能"中遇到了这个问题.
请让我知道一个例子意味着什么?
编辑部分:对于额外的括号,编辑和删除,对不起.
char (*(*a[4])())[5]
Run Code Online (Sandbox Code Playgroud) 我不是C编程的新手.但是我不明白将指针作为C中的结构成员保持指示是有用的.例如
// Fist Way: To keep pointer to function in struct
struct newtype{
int a;
char c;
int (*f)(struct newtype*);
} var;
int fun(struct newtype* v){
return v->a;
}
// Second way: Simple
struct newtype2{
int a;
char c;
} var2;
int fun2(struct newtype2* v){
return v->a;
}
int main(){
// Fist: Require two steps
var.f=fun;
var.f(&var);
//Second : simple to call
fun2(&var2);
}
Run Code Online (Sandbox Code Playgroud)
程序员是否使用它来为C代码提供面向对象(OO)形状并提供抽象对象?或者使代码看起来技术性.
我认为,在上面的代码中,第二种方式也更温和,也很简单.在第一种方式,我们仍然必须通过&var,甚至fun()是结构的成员.
如果将结构定义中的函数指针保持良好,请帮助解释其原因.
对于给定的输入N,所包含的语句执行了多少次?
for i in 1 … N loop
for j in 1 … i loop
for k in 1 … j loop
sum = sum + i ;
end loop;
end loop;
end loop;
Run Code Online (Sandbox Code Playgroud)
任何人都可以找到一个简单的方法或公式来做到这一般.请解释.
让我们假设我有一个结构:
struct A {
uint16_t a;
uint64_t b;
};
Run Code Online (Sandbox Code Playgroud)
有没有办法获得A w/o填充的大小?ie:所有成员的sizeof总和(即使它不是递归的).
通常sizeof(A) == 16.
我想__GCC_sizeof__(A) == 10.
我希望它在测试代码中不影响实际代码,这意味着在结构定义中没有"#pragma"s和no "__attribute__".(虽然它可以完成#ifdef TEST,但它非常难看).
它不必是便携式的,GCC足够了.
谢谢!
有没有可用于函数反转的库?更具体地说,给定一个函数y=f(x)和域,是否有可以输出的库x=f(y)?可悲的是,我不能在我的应用程序中使用matlab /数学,寻找C/Python库..
几个月前,我写了一个用于Linux的CGI应用程序,用于popen()读取命令的输出,然后我关闭管道fclose().
现在,我读到需要使用密切管道pclose().
手册说:
返回值
popen()是一个正常的标准I/O流,除了必须用pclose()而不是 关闭之外,它在所有方面都是fclose(3).
我的代码是这样的:
if ((NULL != (f = popen(command.value, "r")))) {
//do something
fclose(f);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我的错误有安全问题吗?该计划目前正在制作中.在测试中它没有做任何问题.真正需要的,用打补丁pclose()来代替fclose()?注意:我只在程序中打开一次PIPE.
今天,在我当地的家里,我做了一些测试,fclose()并pclose()没有返回EOF表示失败.
我试着写一个简单的C程序.在这里我定义了一个宏.
#define NAME(x) #x ## _bingo
Run Code Online (Sandbox Code Playgroud)
现在首先要解决哪一个(#和##)?
我被卡住了:).我试图谷歌关于这样的宏优先权.但找不到任何相关的东西.
因为bool,它是8位而只有真和假,为什么它们不能使它成为单位.
而且我知道有bitset,但不是那么方便,我只是想知道为什么?
例如,我想在c中打印一个最多2位小数的值,而不是将其四舍五入.
喜欢:
a = 91.827345;
printf("%.2f", a);
Run Code Online (Sandbox Code Playgroud)
将打印91.83,但我希望输出91.82只是.怎么做?