char** x做形参解析
来源:互联网 发布:黄淮学院教务网络 编辑:程序博客网 时间:2024/05/16 01:30
一、char** x做形,传入前的理解:
int pthread_join(pthread_t tid,void** rva_ptr)
此函数功能:阻塞调用线程,直到指定的线程终止,rva_ptr是线程退出 返回值的指针。
一般都会这样写程序调用:
int ret;
pthread_t tid;
void* rva_ptr;
.......
ret=pthread_join(tid,&rva_ptr);
为什么这么传呢?
我的理解是,形参是往函数里传的,不管是传入一值给里面的函数用,或是将里面的一个结果拿出来,作为一个形参,都是从外接收值的。
很明显,pthread tid,是往函数传入一个pthread类型的值tid,因为里要用到这个线程标识符。
void** rva_ptr,是往里传入一个二级指针变量里的一个值,即一个指针变量的地&rva_ptr,也是函数里面要用到这个地址,主要是用到地址上面的那个变量rva_ptr,这是一个地址变量,所以返回值就存在这里,因为返回值就是一个地址。
二、char** x作形参,传入后
int main(int argc,char** argv)
上面这行指令等于int main(int argc,char* argv[])
具体原理我也讲不清楚,但我知道怎么用,char** argv 和数组的数组(就是人们常误解的多维数组)是一样的,至少在这里是一样的。
argv就是这个数组的首地址。
所以输入./test.c test1 test2 test3 test4
printf("%s\n",argv[0]); 等效于 printf("%s\n",*(argv));
printf("%s\n",argv[1]); printf("%s\n",*(argv+1));
printf("%s\n",argv[2]); printf("%s\n",*(argv+2));
printf("%s\n",argv[3]); printf("%s\n",*(argv+3));
printf("%s\n",argv[4]); printf("%s\n",*(argv+4));
输出结果都为:
./test.c
test1
test2
test3
test4
同样如果是想用字符串里的单个字符时:
printf("%c\n",argv[1][0]); = printf("%c\n",*(argv+1)[0]);
输出都为:
t
- char** x做形参解析
- Char (*(*x())[]) ()
- (char*)&x 和 char*&x
- (char *)&p[x]=x
- java char类型 解析
- 大端小端(char)&x 和 char&x 的区别
- 解析char *p与char p[]
- 解析char *p与char p[] 区别
- 解析char *p与char p[]
- 解析char *p与char p[]
- 解析char *p与char p[] 区别
- 解析char *p与char p[]
- 解析char *p与char p[]
- 解析char *p与char p[]
- 解析char *p与char p[]
- 解析char *p与char p[]
- 解析char *p与char p[]
- 解析char *p与char p[]
- new 第四届BOBSLEDDING(不要被省赛的题目吓到,里面不一定有算法)
- 那个不嫌你穷的姑娘,为什么没陪你走到最后
- 【Introduction】人类大脑
- 发个帖子,算是破处啦,O(∩_∩)O哈哈~
- 珍惜每一天,善待自己、善待他人
- char** x做形参解析
- 假如在西安拥有爱情
- JAVA如何对ArrayList中对象按照该对象某属性排序(实例)
- 浅析cocos2d-x实现中文支持
- JAVA正则表达式语法与实例
- PreTranslateMessage
- ubuntu 12.04 LTS 安装可调试bochs 2.6
- svc: failed to register lockdv1 RPC service (errno 111).
- Linux