首页 / C++ / C/C++ Char指针到指针和数组
C/C++ Char指针到指针和数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C/C++ Char指针到指针和数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1669字,纯文字阅读大概需要3分钟。
内容图文
![C/C++ Char指针到指针和数组](/upload/InfoBanner/zyjiaocheng/748/8f7db5d3f47e461fb249b360b3fd0990.jpg)
有一个带有标题的函数,例如:
BPS_API int dialog_event_get_filebrowse_filepaths(bps_event_t* event,
char** file_paths[], int* num_paths);
这是来自BlackBerry 10的Native SDK,适合任何想知道的人(可以找到here).
问题是:我应该提供什么作为第二个论点.此函数应填充一个char指针数组,以便返回所选的文件路径.
我试着这样称呼它:
char* ar[2];
dialog_event_get_filebrowse_filepaths(event, &ar, &number_paths);
我从QNX Momentics那里收到错误:
cannot convert 'char * (*)[2]' to char * * * for argument 2 to int
dialog_event_get_filebrowse_filepaths(bps_event_t *, char * * *, int *)
这似乎是最合乎逻辑的称呼方式.据我所知,它需要一个指针数组的内存地址才能设置它们.
但是,如果我声明:
char** ar[2];
dialog_event_get_filebrowse_filepaths(event, ar, &number_paths);
它工作,但这样我创建了一个指向char指针的数组(char *数组的数组).这是我应该真正提供的功能吗?
解决方法:
文档应该更加明确,但我很确定这是函数所期望的:
首先,帮助解码函数的一些经验法则:
>该类型实际上相当于char ***.这意味着我们必须找到三个指针的含义.
> C中的字符串是char *(为了简洁省略了const).正如我们所期望的那样,函数填充了一个字符串数组,这就是一个*.
> C中的数组通常由指针表示.那是第二个*.
>“输出参数”可以用两种方式之一处理:调用者分配内存,传递指针,告诉被调用者在哪里写入数据,或者调用者不分配任何内存,只需传入一个指针即可.指针.然后被调用者将修改“最里面”指针以指向被调用者自己分配的一块内存.第二种方法将解释最后的*.这也解释了文档说明,当不再需要时,必须使用bps_free()释放保存这些值的内存 – 因为内存是由库函数分配的,而不是由你来分配,所以使用正确的自由函数很重要.
因此,应该像这样调用函数:
char** strs;
dialog_event_get_filebrowse_filepaths(foo, &strs, bar);
当函数返回时,strs将指向由dialog_event_get_filebrowse_filepaths分配的字符串数组的第一个条目.
内容总结
以上是互联网集市为您收集整理的C/C++ Char指针到指针和数组全部内容,希望文章能够帮你解决C/C++ Char指针到指针和数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。