c语言参数解析
A. c语言中主函数的参数有什么作用
1.
main函数
是
程序
的入口函数,每次程序执行都是从main,很多地方main函数都会带有参数:main
(int
argc,char
*argv[])
2.简单的来说mian函数就是带有两个参数,第一个参数是一个
整型变量
,第二个参数是一个指向
字符串
的
指针数组
。
3.这里的参数由
操作系统
来调用,并给它们赋值。
4.现在的操作系统都是图形化的,参数的调用基本都隐藏起来,不过可以借助DOS来理解:
在
DOS操作系统
中输入这样的命令:C:>可执行文件名
参数参数……;
5.操作系统调用C语言的程序也是这样调用的。第一个参数argc代表命令中参数的个数,文件名也算上。argv就是存储这些参数的。
B. 在C语言里,参数是什么意思
参数就是用来代替一个数的未知数
比如你定义时间,用t做参数
当你要计算路程vt(其中v设为常量),当要算一段时间的路程,只要用这个公式,再带入一个t的值就可以了。
总之,参数就是一个符号,没有实际意义,要让他有实际意义,就给参数附一个值就可以了
形参就是没有实际意义的参数
比如上面的t
实参就是有实际意义的参数
比如把上面的t赋值的那个常量
C. c语言中什么是参数
如何写可变参数的C函数以及这些可变参数的函数编译器是如何实现的呢?下面是我为大家整理的关于c语言的参数介绍及使用,希望可以帮到大家哦。
简单的可变参数的C函数
下面我们来探讨如何写一个简单的可变参数的C函数.写可变参数的C函数要在程序中用到以下这些宏:
void va_start( va_list arg_ptr, prev_param );
type va_arg( va_list arg_ptr, type );
void va_end( va_list arg_ptr );
va在这里是variable-argument(可变参数)的意思.
这些宏定义在stdarg.h中,所以用到可变参数的程序应该包含这个头文件.下面我们写一个简单的可变参数的函数,改函数至少有一个整数参数,第二个参数也是整数,是可选的.函数只是打印这两个参数的值.
void simple_va_fun(int i, ...)
{
va_list arg_ptr;
int j=0;
va_start(arg_ptr, i);
j=va_arg(arg_ptr, int);
va_end(arg_ptr);
printf(%d %dn, i, j);
return;
}
我们可以在我们的头文件中这样声明我们的函数:
extern void simple_va_fun(int i, ...);
我们在程序中可以这样调用:
simple_va_fun(100);
simple_va_fun(100,200);
从这个函数的实现可以看到,我们使用可变参数应该有以下步骤:
1)首先在函数里定义一个va_list型的变量,这里是arg_ptr,这个变量是指向参数的指针.
2)然后用va_start宏初始化变量arg_ptr,这个宏的第二个参数是第一个可变参数的前一个参数,是一个固定的参数.
3)然后用va_arg返回可变的参数,并赋值给整数j. va_arg的第二个参数是你要返回的参数的类型,这里是int型.
4)最后用va_end宏结束可变参数的获取.然后你就可以在函数里使用第二个参数了.如果函数有多个可变参数的,依次调用va_arg获取各个参数.
如果我们用下面三种 方法 调用的话,都是合法的,但结果却不一样:
1)simple_va_fun(100);
结果是:100 -123456789(会变的值)
2)simple_va_fun(100,200);
结果是:100 200
3)simple_va_fun(100,200,300);
结果是:100 200
我们看到第一种调用有错误,第二种调用正确,第三种调用尽管结果正确,但和我们函数最初的设计有冲突.下面一节我们探讨出现这些结果的原因和可变参数在编译器中是如何处理的.
可变参数在编译器中的处理我们知道va_start,va_arg,va_end是在stdarg.h中被定义成宏的,由于1)硬件平台的不同 2)编译器的不同,所以定义的宏也有所不同,下
面以VC++中stdarg.h里x86平台的宏定义摘录如下(''号表示折行):
typedef char * va_list;
#define _INTSIZEOF(n)
((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )
#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
#define va_arg(ap,t)
( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
D. C璇瑷涓诲嚱鏁板悗闱㈢殑镄勬嫭鍙烽噷镄勫弬鏁版槸浠涔堟剰镐濓纻
void琛ㄧず鍙傛暟涓虹┖锛屽嵆杩欎釜鍑芥暟涓嶅惈鍙傛暟锛屾瘆濡傚畾涔変竴涓猵rint鍑芥暟銆
绋嫔簭镓ц屾绘槸浠main鍑芥暟寮濮嬶纴濡傛灉链夋湁鍏朵粬鍑芥暟锛屽垯瀹屾垚瀵瑰叾浠栧嚱鏁扮殑璋幂敤钖庡啀杩斿洖鍒涓诲嚱鏁锛屾渶钖庣敱main鍑芥暟缁撴潫鏁翠釜绋嫔簭銆傚湪镓ц岀▼搴忔椂锛岀敱绯荤粺璋幂敤main鍑芥暟銆俶ain 鍑芥暟鏄鍦ㄧ▼搴忓惎锷ㄤ腑瀹屾垚瀵瑰叿链夐润镐佸瓨鍌ㄦ湡镄勯潪灞閮ㄥ硅薄镄勫埯濮嫔寲涔嫔悗琚璋幂敤镄勚傚畠鏄绋嫔簭鍦ㄦ湁瀹夸富 (hosted)鐜澧冿纸浜﹀嵆链夋搷浣灭郴缁燂级涓镓鎸囧畾镄勫叆鍙g偣銆傝嚜绔嬬▼搴忥纸钖锷ㄥ姞杞藉櫒锛镎崭綔绯荤粺鍐呮牳锛岀瓑绛夛级镄勫叆鍙g偣鍒欐槸鐢卞疄鐜板畾涔夌殑銆
镓╁𪾢璧勬枡锛
涓诲嚱鏁扮殑涓や釜褰㈠弬褰㈠纺涓镄勫舰鍙傦纴鍏佽镐粠镓ц岀幆澧冧腑浼犻掍换镒忕殑澶氩瓧鑺瀛楃︿覆锛埚畠浠阃氩父琚绉颁负锻戒护琛屽弬鏁帮级锛屽悇涓鎸囬拡 argv.. argv[argc-1] 鎸囧悜姣忎釜杩欎簺瀛楃︿覆镄勭涓涓瀛楃︺俛rgv[0] 鏄鎸囧悜涓涓琛ㄧず鐢ㄤ簬镓ц岃ョ▼搴忚嚜韬镄勫悕瀛楃殑绌虹粨灏惧氩瓧鑺傚瓧绗︿覆锛堟垨钥呭綋镓ц岀幆澧冧笉鏀鎸佹椂锛屼负绌哄瓧绗︿覆 ""锛夌殑寮澶村瓧绗︾殑鎸囬拡銆
杩欎簺瀛楃︿覆鏄鍙浠ユ敼锷ㄧ殑锛岃槠铹跺瑰畠浠镄勬敼锷ㄥ苟涓崭细琚浼犲洖缁欐墽琛岀幆澧冿细姣斿傚彲浠ョ敤 std::strtok 𨱒ヤ娇鐢ㄥ畠浠銆傜敱 argv 镓鎸囧悜镄勬暟缁勭殑澶у皬镊冲皯涓 argc+1锛屽叾链钖庝竴涓鍏幂礌 argv[argc] 淇濊瘉涓轰竴涓绌烘寚阍堛
E. c语言中argc和argv是什么意思
argc 是 argument count的缩写,表示argv这个二级指针指向的内存区域中保存的由stub写入的有效命令行参数的个数.
argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要输入的main函数的参数个数是argc-1个。
(5)c语言参数解析扩展阅读
argc和argv的使用:
#include<stdio.h>
int main(int argc,char *argv[])
{
if(argc==1||argc>2)
printf("请输入想要编辑的文件名如:fillname");
if(argc==2)
printf("编辑%s ",argv[1]);
return 0;
}