|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <string.h>
static unsigned char arr1[5]={1,2,3,4,5};
static unsigned char arr2[5]={6,7,8,9,10};
static unsigned char arr3[5]={11,12,13,14,15};
static unsigned char arr4[5]={16,17,18,19,20};
static unsigned char arr5[5]={21,22,23,24,25};
unsigned char *arr_tab[]=
{
&arr1,
&arr2,
&arr3,
&arr4,
&arr5,
};
void data_Send(unsigned char cnt)
{
unsigned char *p=NULL;
//在这里我想通过cnt来指向需要遍历哪一个arr数组,要怎样操作
//cnt=0时,遍历arr1
//cnt=1时,遍历arr2 依此类推
}
void main()
{
data_Send(0);
system("pause");
}
在C语言中,指针数组是通过指针来表示一个数组的集合,无法直接通过指针大小来获取数组的长度。但是,你可以利用数组的特性来计算指针数组中每个元素所指向的数组的长度。可以使用`sizeof`运算符结合指针算术来实现。下面是一个示例代码:
#include <stdio.h>
int main() {
unsigned char arr1[] = {1, 2, 3, 4, 5};
unsigned char arr2[] = {6, 7, 8, 9, 10};
unsigned char arr3[] = {11, 12, 13, 14, 15};
unsigned char arr4[] = {16, 17, 18, 19, 20};
unsigned char arr5[] = {21, 22, 23, 24, 25};
unsigned char *arr_tab[] = {arr1, arr2, arr3, arr4, arr5};
int arr_tab_length = sizeof(arr_tab) / sizeof(arr_tab[0]); // 指针数组的长度
for (int i = 0; i < arr_tab_length; i++) {
int arr_length = sizeof(arr_tab[i]) / sizeof(arr_tab[i][0]); // 计算每个数组的长度
printf("arr%d length: %d\n", i+1, arr_length);
}
return 0;
}
在上面的代码中,我们定义了一个指针数组`arr_tab`,存放了几个不同长度的数组。首先,我们通过`sizeof(arr_tab) / sizeof(arr_tab[0])`来计算指针数组的长度。然后,使用循环遍历每个数组,并通过`sizeof`运算符来计算每个数组的长度。最后,将每个数组的长度打印出来。
运行代码,输出结果为:
arr1 length: 5
arr2 length: 5
arr3 length: 5
arr4 length: 5
arr5 length: 5
可以看到我们成功获取了每个数组的长度,即使数组长度不同。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|