Tag: 参数传递

如何在C中解析整数命令行参数?

我希望用户传递两个参数或将其留空。 例如: ./program 50 50 要么 ./program 当我尝试使用int main(int argc, char *argv[]) ,我做的第一件事就是将char *argv[]更改为int *argv[]但它不起作用。 我想要的是用户只需输入0到100之间的两个整数 。 因此,如果它不是两个整数,那么它应该给出一个错误。 我有点想用类型给出错误(就像我以前用C#编程的那样),但无论我输入什么,argv [1]都会一直是’char’类型。 所以我所做的就是 for (int i = 0; i <= 100; i++) { //printf("%d", i); if (argv[1] == i) { argcheck++; printf("1st one %d\n", i); } else if (argv[2] == i) { argcheck++; printf("2nd one %d\n", i); […]

为什么我不能将常量数组作为参数传递?

在C中,为什么我不能这样做: arrayfn({1.0, 2.0, 3.0}); 如果arrayfn是一个函数,它接受double[]或double*类型的一个参数,无论哪个。 试试这个给我一个语法错误。 有没有一种方法可以在C中实现这样的东西 – 生成并立即传递一个在编译时已知的数组 – 避免不得不花费一行代码预先声明并填​​充它?

char * argv 和char ** argv之间的差异,为main()的第二个参数

代码1 #include int main(int argc, char *argv[]) { int j; printf(“%d”, argv[1][0]); return 0; } 代码2 #include int main(int argc, char **argv) { int j; printf(“%d”, argv[1][0]); return 0; } CODE 1和CODE 2都提供相同的输出。 但是CODE 1和CODE 2中主要function的参数2是不同的。 在编译时在数据部分上创建指针数组。 argv是指针数组。 然后我们应该在main函数中声明参数作为指向字符的指针,即** argv。 如何在CODE 1中声明是否正确?

function参数最大数量

我没有发现C99标准中计数函数参数的任何限制,我想它只受堆栈大小的限制。 但是,我编写了一个简单的测试程序来演示具有大量参数的函数的行为。 当它大约10k时,我在gcc上遇到以下错误(gg版本4.5.3在Cygwin上): /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../libcygwin.a(libcmain.o):(.text+0xa9): undefined reference to `_WinMain@16′ 我意识到这么大的参数数量不太可能,但我想知道编译器的哪个参数决定了这个限制? 编辑 用于生成C源代码的脚本 #!/bin/sh num=$1 echo “” > out.c echo “#include ” >> out.c echo “int getsum( ” >> out.c i=0 while [ $i -lt $num ] do ((i++)) if [ $i -eq $num ] then echo “int p$i )” >> out.c else echo -ne “int p$i,” […]

将参数动态传递给可变参数函数

我想知道是否有任何方法可以动态地将参数传递给可变参数函数。 即如果我有一个function int some_function (int a, int b, …){/*blah*/} 我接受用户的一堆值,我想要一些方法将这些值传递给函数: some_function (a,b, val1,val2,…,valn) 我不想写所有这些function的不同版本,但我怀疑没有其他选择?

如何更改作为参数传递的变量的值?

如何更改在C中作为参数传递的变量的值? 我试过这个: void foo(char *foo, int baa){ if(baa) { foo = “ab”; } else { foo = “cb”; } } 并致电: char *x = “baa”; foo(x, 1); printf(“%s\n”, x); 但它打印baa为什么? 提前致谢。

参数传递C – 指针,地址,别名

有人可以解释一下C参数传递的区别吗? 根据教授的说法,有4种不同的传递参数的方法 呼叫按值 地址呼叫(指针) 调用 – 别名 全局变量/静态变量 如果你能举一个例子,我将非常感谢,你的工作将受到赞扬。

指针作为C中的函数参数

如果我有这个代码,例如: int num = 5; int *ptr = &num; 以下两个function有什么区别? void func(int **foo); void func(int *foo); 我在哪里调用函数: func(&ptr); 我意识到两者的前者将指针指向一个参数,而第二个只取一个指针。 如果我传入func(&ptr) ,我实际上是在传入一个指针。 指针指向另一个指针有什么区别? 我相信后者会给出一个不兼容的警告,但只要你知道你在做什么,似乎细节无关紧要。 似乎可能为了可读性和理解,前者是更好的选择(2星指针),但从逻辑的角度来看,有什么区别?