数组当函数参数时,所带来的问题?
来源:互联网 发布:调音师知乎 编辑:程序博客网 时间:2024/05/17 02:27
今天写了一个小deamon,利用二维数组,当函数参数,用于获取子函数传出来的字符串,发现在主函数里,就是打印不出来字符串
#include <stdio.h>
#include <stdlib.h>
void test( char ***buf)
{
char **p = *buf;
printf("sizeof = %d\n", sizeof(buf));
printf("test buf = %p\n", buf);
printf("test buf + 1= %p\n", buf + 1); //此时的buf+1 与main的buf + 1不同
strcpy( buf, "hello");
strcpy( buf + 1, "world");
//strcpy( &buf +1, "world");
//strcpy(&buf[1], "world1");
}
int main()
{
char buf[16][16];
memset(buf, 0, sizeof(buf));
test(&buf);
printf("sizeof = %d\n",sizeof(buf));
printf("main buf = %p\n", buf);
printf("main buf +1 = %p\n", buf + 1);
//strcpy(buf, "hello");
//strcpy( buf +1, "world");
printf("%s\n",buf);
printf("%s\n",buf[1]);
//printf("%s\n", *(buf +1));
return 0;
}
在main函数里定义了二维数组,想通过二维数组获取条用函数的字符串,尝试各种方法都不行
1、直接使用二维数组的首元素作为函数参数 test(buf);
2、直接使用了三级指针做函数,还是不行test(&buf);
在各函数中打印了指针的地址, 使用%p可以打印,对比了buf 和 buf + 1,在子函数里 buf + 1 与 主函数的 buf + 1 有所不同, 在二维数组当函数参数时,此时子函数buf 是局部变量,因此在buf + 1 时,就地址就相当于
buf + sizeof(char *) , 与main函数的 buf + 1, 不同
想从子函数获取字符串,可以先在堆上分配空间,在使用地址,获取字符串,最后再释放内存空间
- 数组当函数参数时,所带来的问题?
- 把结构体数组应用在vc的函数中当形式参数遇到的问题
- 当数组是函数的参数时, 为什么sizeof 不能正确报告数组的大小?
- 函数的数组参数问题
- 当数组作为函数参数时函数中sizeof()的讨论
- 关于使用AJAX所带来的问题
- 由求值顺序所带来的问题
- IE cache缓存 所带来的问题
- IE cache缓存 所带来的问题
- eVC 移植所带来的已知问题
- 数据库应用程序迁移所带来的问题
- 代码不兼容所带来的问题
- Jquery版本不同所带来的问题
- 电子商务秒杀所带来的问题?
- 电子商务秒杀所带来的问题
- 闭包所带来的问题
- 当模板函数遇上数组参数
- 当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针!
- AI浪潮下需要思考的事
- 深究js(四)——表达式
- 哲学家进餐问题C语言实现
- MySQL 系列第一天
- telnet模拟Http请求
- 数组当函数参数时,所带来的问题?
- NOIP2011 Day2 T2 聪明的质监员
- onkeydown
- 深入理解javascript原型和闭包(2)——函数和对象的关系
- 用Composer 安装 laravel框架
- D
- 修改mysql密码
- Sizeof() 详解
- 【模板】【洛谷P3370】字符串哈希