Tag: 参数

Getopt可选参数?

我有一个程序,你输入一个选项-d然后是否在选项后提供一个非可选参数,做一些事情。 inheritance我的代码: #include #include #include #define OPT_LIST “d::” int main (int argc, char *argv[]) { int c; char string[] = “blah”; while ((c = getopt (argc, argv, OPT_LIST)) != -1) { switch (c) { case ‘d’: printf(“%s\n”, optarg); break; case ‘?’: fprintf(stderr, “invalid option\n”); exit(EXIT_FAILURE); } } } 因此,如果在选项后输入非可选参数,则会打印参数。 但是如果用户没有提供非可选参数,我希望它打印出char“string”(这就是为什么我把双冒号放在OPT_LIST中)。 但我不知道如何做到这一点,所以任何帮助将不胜感激。 下面是我运行程序时会发生什么: user:desktop shaun$ ./arg […]

C函数参数中的数组语法与指针语法

我理解数组如何衰减到指针。 我明白,对于编译器,这个: void foo(int *arg1); 是100%相当于: void foo(int arg1[]); 一种风格应该优先于另一种吗? 我希望保持一致,但我很难为两种决定辩护。 虽然int main(int argc, char *argv[])和int main(int argc, char **argv)是相同的,但前者似乎更常见(如果我错了,请纠正我)。

const为参数上的数组大小表达式

我有以下C代码示例: int f(const int farg[const 5]) { } 数组大小的附加const有什么作用? 当我省略const时有什么区别?

使用带有任意数量参数的函数的参数,单位为C.

我刚才读到: “C void arguments”关于C中这些函数定义之间的差异: int f(void) 和 int f() 理解第二种forms意味着函数返回带有任意数量参数的整数,我想知道我们如何才能实际访问和使用这些未知参数 ? 我很想得到示例代码和解释。 另外,我知道C语言中的Varargs的机制(使用va_arg , va_end , va_start函数),并且很高兴听到这种机制与上面提到的f()forms之间的差异 。 非常感谢!

在函数内修改由值’传递的参数并将它们用作局部变量

我已经看到了一些代码,其中通过值传递给函数的参数被修改或分配了一个新值,并且被用作局部变量。 这样做好吗? 这样做是否存在任何陷阱,或者这样编码是否可以?

宏内的变量参数

我有两个函数foo1(a,b)&foo2(a,b,c)和一个宏 #define add(a,b) foo(a,b) 我需要重新定义宏来完成, 1.如果使用2个参数调用add(),则调用foo1 如果使用3个参数调用add(),则调用foo2 我是选项VA_ARGS的新手。 我怎样才能做到这一点

无法使用变量参数实现函数

我试图用变量参数实现函数,但是将垃圾值作为输出。我在尝试自己实现之前已经参考过这篇文章 。可以任何人帮我解决这段代码,因为我无法理解这段代码中的错误。 /* va_arg example */ #include /* printf */ int FindMax (int n, …) { int i,val,largest,*p; p=&n; p+=sizeof(int); largest=*p; for (i=1;ival)?largest:val; } return largest; } int main () { int m; m= FindMax (7,702,422,631,834,892,104,772); printf (“The largest value is: %d\n”,m); return 0; }

C,处理变量参数函数

假设我想做这样的事情 void my_printf(char *fmt,…) { char buf[big enough]; sprintf(buf,fmt,…); } 将可变数量的参数直接传递给具有接受变量参数的函数的正确方法是什么?

汇编,多个参数-m32 / linux(与C中的stdarg相同)

为了解决这个问题,我理解C,我仍然是大会的初学者,所以我在这里遇到了一个小问题。 我在使用多个参数时遇到了一些麻烦,如果我应该这样做,可能会计算它们,并在汇编代码中使用format参数。 尝试将一些字节添加到具有许多参数的字符串中。 我知道如何将两个第一个参数放在堆栈上,但是第一个参数之后的其他参数是格式(如%s,%d,%c等),第一个参数是应该是变量i的那个想写信给。 在C中,标准main具有参数计数器。 我可能想在这里算一下这些论点!? 我怎么能这样做,如果这是怎么做的? .globl minisprintf # Name: minisprintf # Synopsis: A simplified sprintf # C-signature: int minisprintf(unsigned char *res, unsigned char *format, …); # Registers: AL: for characters # %ECX: first argument, res # %EDX: second argument, args # minisprintf: # minisprintf pushl %ebp # start of movl %esp, %ebp # […]

C:为一个函数参数发送不同的结构

我有一个使用OpenGL绘制圆的函数,我想传递一个包含x和y坐标以及半径的结构。 问题是这个相同的函数必须与3个不同的结构一起使用,所有结构都包含坐标,半径和绘制函数不使用的其他一些东西。 有没有办法只为3个不同的结构有一个参数(一次只发送一个)。 我希望我已经足够精确了。 PS:function必须是“抽象的”。