K P*_*K P 0 c++ multidimensional-array
为什么这段代码不起作用?我有一些旧代码,不想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;
}
Run Code Online (Sandbox Code Playgroud)
此代码不起作用,因为指针指向char
是不相同的,为2由5阵列的char
,具有或不具有铸:
*
运算符解引用以下是如何构建与char**
以下内容兼容的数组:
char a[2][5];
strcpy(a[0],"abc");
strcpy(a[1],"def");
char *str1[] = { a[0], a[1] };
test(str1);
Run Code Online (Sandbox Code Playgroud)
现在str1
是一个char
指针数组,有两个项目.第一项是包含地址的指针a[0]
; 第二项是包含地址的指针a[1]
.指针数组可以传递给期望指向指针的test()
函数,因此您的函数可以正常工作.
归档时间: |
|
查看次数: |
855 次 |
最近记录: |