本文目录一览:
- 1、C语言中 int *num;num=(int *)arg;是什么意思
- 2、c语言中argc和argv是什么意思?
- 3、c语言va_arg使用
- 4、c语言 为什么最后arg 还是1 不是在fun里变成2了吗
C语言中 int *num;num=(int *)arg;是什么意思
void(*(signal(int signo, void(*func)(int))))(int). linux高级c里的一个函数, 返回值是一个函数的地址, 这个函数有一个整型的参数,最后的那个int, 如果typedef void Sigfunc(int);
void(*(signal(int signo, void(*func)(int))))(int);相当于Sigfunc *signal(int, Sigfunc *);
c语言中argc和argv是什么意思?
argc是参数个数,定义为int
argv是字符串数组,存的是参数,定义为char**或者char*
argv[]
比如你编译好的程序为my.exe
在命令行执行
my.exe
1
2
3
那argc就是4,argv[0]是"my.exe",argv[1]是"1",argv[2]是"2",argv[3]是"3";
c语言va_arg使用
va_arg是一个宏定义,用于处理函数不确定参数个数时,即可变参数列表时对参数的取用。
1 头文件:
#include stdarg.h
2 形式:
type va_arg(va_list ap, type);
3 说明:
这个宏被展开成一个包含类型为type,值为ap的表达式。参数ap应该首先被宏va_start 或 va_copy初始化,但又必须在被宏va_end调用之前使用。每次调用va_arg都会改变ap值使得后续的参数值能被依次添加。参数type应该是一个类型名,并且用type*能够得到该类型的指针类型。如果type为空,或者type和实际参数不匹配, 那么除了以下两种情况,这个宏的行为是未定义的。
1) 一个是带符号整型,另一个是与之对应的无符号整型,并且值可以被表达成这两种类型的任何一种;
2) 一个是空类型指针,另一个是字符类型指针。
第一次调用va_arg返回parmN之后的参数值,后续的调用依次返回剩下的参数值。parmN应为函数中“...”前最后一个参数值。
c语言 为什么最后arg 还是1 不是在fun里变成2了吗
int Fun (int arg)这是值传递
在函数里面对参数的改变无法传递到函数外面的实参中
必须传指针或者引用才能在函数里改变实参的值