char* arr[][3]={ {"北京","沈阳","哈尔滨"}, {"北京","张家口"}, {"北京","石家庄","武汉"} }; for (int i=0;i<3;i++) { char **p=arr[i]; for (int i=0;i<3;i++) { char **p=arr[i]; for (int j=0;*(p+j)!="\0";j++) { // if (*(p+j)==str_org.c_str()) // { // org=arr[i]; // } // if (*(p+j)==str_des.c_str()) // { // des=arr[i]; // } // cout<<*(p+j)<<endl; } }
时间: 2024-03-11 18:44:14 浏览: 33
这段代码展示了如何使用循环遍历二维字符串数组 `arr` 中的所有元素,并将其输出到控制台。
首先,外层的 `for` 循环遍历二维数组的每一行,内层的 `for` 循环遍历每一行中的每一个元素。在内部循环中,将 `arr[i]` 赋值给 `char** p`,即将 `p` 指向当前行的第一个元素的地址。
然后,使用指针运算 `*(p+j)` 访问每个元素的值,并将其输出到控制台。需要注意的是,由于每个字符串数组都没有以 `'\0'` 结尾,因此不能使用 `*(p+j)!="\0"` 的方式来判断循环的终止条件,可以使用字符串比较函数 `strcmp` 来判断元素是否为空字符串。
当前代码中注释掉的部分是想要在循环中判断某个字符串是否与 `str_org` 或 `str_des` 相同,但是由于没有给出 `str_org` 和 `str_des` 的定义,因此无法确定这段代码的实际功能。
相关问题
char arr[] = "12345"; char* arr1 = arr; char* arr2 = arr; *arr= "234576";哪里错了
这段代码有几个错误:
1. 在第三行中,应该使用指针 `arr2` 来指向字符串 "12345" 的地址,而不是将 `arr` 再次赋值给 `arr2`。
2. 在第四行中,应该使用单引号 `' '` 而不是双引号 `" "` 来表示字符。
正确的代码应该是这样的:
```
char arr[] = "12345";
char* arr1 = arr;
char* arr2 = &arr[0];
*arr = '2';
```
这段代码将字符 '2' 赋值给了字符串 "12345" 的第一个字符位置,即将字符串变为 "22345"。注意,`arr1` 和 `arr2` 都指向字符串 "12345" 的首地址,因此对 `*arr` 的修改会影响整个字符串。
char* arr[][3]={ {"北京","沈阳","哈尔滨"}, {"北京","张家口"}, {"北京","石家庄","武汉"} };char **p=arr[0];
这段代码定义了一个二维数组 `arr`,其中每个元素是一个指向 `char*` 类型的指针,数组共有 3 行 3 列,即总共有 9 个指针。每行表示一个字符串数组,每列表示该字符串数组中的一个元素。
接下来,将 `arr[0]` 赋值给 `char** p`,即将 `p` 指向 `arr` 的第一行,也就是指向了 `"北京"`、`"沈阳"`、`"哈尔滨"` 三个字符串的指针地址之一。
需要注意的是,该代码没有给出任何输出或者运算操作,因此没有明显的结果。