const char gcszOnOff[][NEW_DEF_LEN] = {// 投入退出 { "退出" }, { "投入" } }; const char gcszLcdSynctmMode[][DEF_LEN] = {//LCD对时方式 {"主站"}, {"北斗GPS"} }; 用什么类型的指针可以同时指向gcszLcdSynctmMode和gcszOnOff
时间: 2023-07-23 10:23:06 浏览: 36
gcszOnOff和gcszLcdSynctmMode都是二维字符数组,它们的每一个元素都是一个字符数组,因此它们的类型是相同的。可以使用const char (*ptr)[NEW_DEF_LEN]类型的指针来同时指向gcszLcdSynctmMode和gcszOnOff数组,这个指针可以用来遍历这两个数组中的每一个字符串。例如:
```
const char (*ptr)[NEW_DEF_LEN] = NULL;
int i = 0;
ptr = gcszOnOff;
for (i = 0; i < sizeof(gcszOnOff)/sizeof(gcszOnOff[0]); ++i) {
printf("%s\n", *(ptr+i));
}
ptr = gcszLcdSynctmMode;
for (i = 0; i < sizeof(gcszLcdSynctmMode)/sizeof(gcszLcdSynctmMode[0]); ++i) {
printf("%s\n", *(ptr+i));
}
```
这段代码会分别输出gcszOnOff和gcszLcdSynctmMode数组中的所有字符串。
相关问题
const char gcszOnOff[][NEW_DEF_LEN] = {// 投入退出 { "退出" }, { "投入" } }; 的gcszOnOff用什么类型的指针可以指向它
gcszOnOff是一个二维字符数组,可以使用const char (*ptr)[NEW_DEF_LEN]类型的指针指向它。这个指针可以用来遍历gcszOnOff数组中的每一个字符串。例如:
```
const char (*ptr)[NEW_DEF_LEN] = gcszOnOff;
for (int i = 0; i < sizeof(gcszOnOff)/sizeof(gcszOnOff[0]); ++i) {
printf("%s\n", *(ptr+i));
}
```
这段代码会输出gcszOnOff数组中的所有字符串。
void displayString(int i, int isDraw, float val, char** stringArray, int x, int y) { (isDraw ? LCD_DisString_Not(x, y, (char *)stringArray[(int)val]) : LCD_DisString(x, y, (char *)stringArray[(int)val])); } const char gcszOnOff[][NEW_DEF_LEN] = {// 投入退出 { "退出" }, { "投入" } }; displayString(i, isDraw, val, gcszOnOff, (i % LISTOFFSET) + 1, 20); 这样调用编译器提示note: expected 'const char **' but argument is of type 'const char (*)
这个编译器提示的意思是,`displayString` 函数的第四个参数应该是一个 `const char **` 类型的指针,但是实际传入的是一个 `const char (*)[]` 类型。这是因为 `gcszOnOff` 是一个二维字符数组,它被定义为 `const char gcszOnOff[][NEW_DEF_LEN]`,表示它的每个元素都是一个长度为 `NEW_DEF_LEN` 的字符数组,而不是一个指向字符数组的指针。
要解决这个问题,可以将 `gcszOnOff` 数组定义为一个指向指针的指针,例如:
```
const char* gcszOnOff[] = { "退出", "投入" };
const char** pGcszOnOff = gcszOnOff;
```
然后将 `pGcszOnOff` 作为参数传递给 `displayString` 函数,就可以避免编译器提示的问题,例如:
```
displayString(i, isDraw, val, pGcszOnOff, (i % LISTOFFSET) + 1, 20);
```
或者,可以修改 `displayString` 函数的声明,将第四个参数的类型改为 `const char (*)[]`,例如:
```
void displayString(int i, int isDraw, float val, const char (*stringArray)[NEW_DEF_LEN], int x, int y) {
(isDraw ? LCD_DisString_Not(x, y, (char *)stringArray[(int)val]) : LCD_DisString(x, y, (char *)stringArray[(int)val]));
}
```
然后就可以使用原来的代码调用 `displayString` 函数了。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)