指向指针的指针 指向数组的指针 指向指针的数组
来源:互联网 发布:在线c语言编译器浙大 编辑:程序博客网 时间:2024/06/06 13:02
前几天在做修改Android的init进程的时候,遇到了一个函数
int do_insmod(int nargs, char **args)
这个函数怎么掉用呢?我定义了一个数组
char test[][10]={
“test“,
”/system/lib/modules/***.ko“
}
do_insmod(0, (char **)test);
然后在int do_insmod(int nargs, char **args)函数中进行打印
printf(”%s\n“,args[1]);
我梦想中是要打印出/system/lib/modules/***.ko的可是怎么滴,系统挂了……
搞了一天,囧 问题没有解决,后来我需要的加载驱动的这个功能被我用脚本实现了就没管它了。
今天又遇到了女盆友问我这个参数该怎么传?
555必须搞定,不然回家跪搓衣板!
先说一下标题的”指向指针的指针“这也就是int do_insmod(int nargs, char **args)参数args需要的东东 就是args本身是一个指针它所指向的也是一个指针(char *),而我定义了一个二位数组(老想着是一样的),我传过来的是test这个二维数组的首地址,而args【1】这其实是第零行滴4列的地址(args是指向指针的指针,所以它的+1或者下标+1,都是加了sizeof(char *)4个字节而不是sizeof(char)),如果我用%c打印而不是用%s他就不会挂,当然也什么东东都打印不出来。
其实不一样!它的本质是”指向数组的指针“
我们想在int do_insmod(int nargs, char **args)这个函数里面实现类似对test这个数组的打印,比如
printf(”%s\n“,args[1]);
printf(”%c\n“,args[1][2]);
就需要定义”指向指针的数组“
char *test[]={
“test“,
”/system/lib/modules/***.ko“
}
do_insmod(0, test);
这样调用
printf(”%s\n“,args[1]):/system/lib/modules/***.ko;
printf("%s\n",*(args+1)+7):/lib/modules/***.ko;
就会打印我想要的结果
当然如果你非要使用二位数组
那么函数就得重写
int do_insmod(int nargs, char (*args)[10])
当然我可没有权利去修改函数的参数,就只能老老实实的写该我的传入内容咯!
oh!头都晕了,学习理科就是悲剧。不知道讲清楚没
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向指针数组的指针
- 指向指针的指针与指针数组
- 指针数组与指向指针的指针
- codeigniter单元测试
- 简单,方便,功能全的php分页类
- (转)maven环境快速搭建
- SQLPLUS使用介绍
- PCI总线操作四: PCI配置周期
- 指向指针的指针 指向数组的指针 指向指针的数组
- android退出提示框
- 去掉office标题前的黑点
- Android测试用例-异步测试
- List Control
- GOLDWAVE内录方法
- Shell学习总结
- Tomcat性能调优-让小猫飞奔 架构师--第四
- 精妙绝伦的CSS——CSS效果例子