之前学习写字画图程序时遇到二维数组形参传值问题。虽然解决了,但也就会一种方法。目前是这样的,程序就省略点了
先声明一个二维数组
const u8 String_CH2[][5]={{0x05,0x32,0xA5,0x77,0x32},
{0xD4,0x08,0x11,0x09,0x02},
{0xB6,0xB2,0x34,0x55,0x04},
{0xF6,0xF2,0x24,0x15,0x01}};
写个原函数
void get(const u8 CH[][5])
{
LCD_ShowNum(10,90,CH[0][0],5,16); // String_CH2[0][0] 5
LCD_ShowNum(10,120,*(*(CH+1)+1),5,16); // String_CH2[1][1] 0xC2 194
}
调用函数 get ( String_CH2 );
这样是可以准确读出对应数组元素的 这样一来就算是可以直接调数组名字投到函数形参里来操作这个数组了 不过让人不爽的是数组的横向值【5】数字不能省略。而且实参数要和形参数一样。也就是我原函数形参横向维度【5】要和实参横向维度【5】数值一样,且不能省略。如果以后我要写一些更大的数值的话原函数和数组定义的这个数就只能预先写大点,比如【4】【255】,但实际我只用到【4】【5】,那么多开辟的数组元素就浪费位置了。
在网上我一直查资料,想如何解决这问题。 试过这样 void get(const u8**CH) {。。。。。}
调用函数 get(const (u8*)String_CH2); 这样编译器通过但,真正读数组元素却什么也读不出。
其他的一些配合都是编译报错。
所以这里,由于C程序水平的限制,我没有弄出来,谁比较熟悉指针用法的朋友指导一下,原子大师能指导下吗? 我的目的是二维数组的传值不要受到
数字的束缚。
|