IOS之学习笔记六(可变形参)
发布时间:2023-03-30 11:07:57 所属栏目:教程 来源:
导读:IOS之学习笔记六(可变形参)
1、实现函数的可变形参
1)、va_list:这是一个可变类型,用于定义指向可变参数列表的指针变量
2)、va_start:让argList指向一个可变参数列表的第一个参数
3)、提取argList当前
1、实现函数的可变形参
1)、va_list:这是一个可变类型,用于定义指向可变参数列表的指针变量
2)、va_start:让argList指向一个可变参数列表的第一个参数
3)、提取argList当前
|
IOS之学习笔记六(可变形参) 1、实现函数的可变形参 1)、va_list:这是一个可变类型,用于定义指向可变参数列表的指针变量 2)、va_start:让argList指向一个可变参数列表的第一个参数 3)、提取argList当前指针指向的参数,并且将指针指向下一个参数 4)、释放argList指针,结束提取 2、测试代码 Args.h #ifndef Args_h #define Args_h #import <Foundation/Foundation.h> @interface Args : NSObject -(void)test:(id)name,...; @end #endif /* Args_h */ Args.m #import <Foundation/Foundation.h> #import "Args.h" @implementation Args -(void)test:(id)name,... { //va_list:这是一个可变类型,用于定义指向可变参数列表的指针变量 va_list argList; if (name) { NSLog(@"%@",name); //va_start:让argList指向一个可变参数列表的第一个参数 va_start(argList,name); //提取argList当前指针指向的参数,并且将指针指向下一个参数 Nsstring *arg = va_arg(argList,id); while (arg) { NSLog(@"%@",arg); arg = va_arg(argList,id); } //释放argList指针,结束提取 va_end(argList); } } #import <UIKit/UIKit.h> #import "AppDelegate.h" #import "Person.h" #import "Apple.h" #import "User.h" #import "Args.h" #import "KVCPerson.h" int main(int argc,char * argv[]) { @autoreleasepool { Args *arg = [Args new]; [arg test:@"chenyu",@"chenxuan",@"chencaifeng",nil]; } } 3、运行结果 chenyu chenxuan chencaifeng 4、对比总结 这个oc里面和c语言里面的实现差不多如下面的代码 #include <stdio.h> #include <stdarg.h> void PrintLines(char *first,...) { char *str; va_list v1; str = first; va_start(v1,first); do { printf("%s\n",str); str=va_arg(v1,char*); } while (str != NULL ); va_end(v1); } int main(int argc,char* argv[]) { PrintLines("First1","Second2","Third3","Fourth4",NULL); return 0; } (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
