当前位置:  开发笔记 > 编程语言 > 正文

传递char**作为参数

如何解决《传递char**作为参数》经验,为你挑选了1个好方法。

为什么这段代码不起作用?我有一些旧代码,不想a在堆中分配.

void test(char **str) {
   cout << str[0] << endl;
   cout << str[1] << endl;
}

int main(int argc, char* argv[]) {
    char a[2][5];
    strcpy(a[0],"abc");
    strcpy(a[1],"def");

    char *str1 = (char *)a;
    test(&str1);

    return 0;
}

dasblinkenli.. 5

此代码不起作用,因为指针指向char相同的,为2由5阵列的char,具有或不具有铸:

指向指针的指针可以用作指针数组,即其元素可以用*运算符解引用

一个2乘5阵列由十个项目组成,每个项目分为两行,每行五个项目.这些项目都不是可以解除引用的指针.

以下是如何构建与char**以下内容兼容的数组:

char a[2][5];
strcpy(a[0],"abc");
strcpy(a[1],"def");

char *str1[] = { a[0], a[1] };
test(str1);

现在str1是一个char指针数组,有两个项目.第一项是包含地址的指针a[0]; 第二项是包含地址的指针a[1].指针数组可以传递给期望指向指针的test()函数,因此您的函数可以正常工作.

演示.



1> dasblinkenli..:

此代码不起作用,因为指针指向char相同的,为2由5阵列的char,具有或不具有铸:

指向指针的指针可以用作指针数组,即其元素可以用*运算符解引用

一个2乘5阵列由十个项目组成,每个项目分为两行,每行五个项目.这些项目都不是可以解除引用的指针.

以下是如何构建与char**以下内容兼容的数组:

char a[2][5];
strcpy(a[0],"abc");
strcpy(a[1],"def");

char *str1[] = { a[0], a[1] };
test(str1);

现在str1是一个char指针数组,有两个项目.第一项是包含地址的指针a[0]; 第二项是包含地址的指针a[1].指针数组可以传递给期望指向指针的test()函数,因此您的函数可以正常工作.

演示.

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有