C语言中二维数组使用指针的问题

C语言 二维数组使用指针获取值的问题

在嵌入式图像处理的中,很多情况下,更适合用指针获取数组的值,而不是通过数组下标获取。

使用指针获取数组值仅需要一次for循环,而利用下标获取二维数组的值时不得不使用两次for循环。

获取二维数组的值与获取一维数组值的方法有所不同,若不注意可能导致程序出错,详见代码:

#include <stdio.h>

int main(){
//初始化一维数组
int a[6]={1,2,3,4,5,6};

//初始化二维数组
int b[3][2]={
{1,2},
{3,4},
{5,6}
};
//利用指针for循环打印一维数组
int i=0;
int j=0;
for(i=0;i<6;i++){
    printf("%d,",*(a+i));
}
结果为:1,2,3,4,5,6,

//利用指针for循环打印二维数组
//错误打印方法:
for(i=0;i<6;i++){
    printf("%d,",*(b+i*2));
    printf("%d \r\n",*(b+i*2+1));
}
//结果为:
//6422032,6422040
//6422048,6422056
//6422064,6422072
//6422080,6422088
//6422096,6422104
//6422112,6422120

//错误打印方法2:
for(i=0;i<3;i++){
    printf("%d,",**(b+i*2));
    printf("%d \r\n",**(b+i*2+1));
}
//结果为:
//1,3
//5,4199705
//1,3
//正确打印方法:
for(i=0;i<3;i++){
    printf("%d,",*(*(b))+i*2);
    printf("%d \r\n",*(*(b)+i*2+1)) ;
}
//结果为:
//1,2
//3,4
//5,6
return 0;
}

通过代码可以发现,一维数组中的值直接指向存入的Value,而二维数组中的值指向一个地址,需要对地址再次解析才可以获取数组中的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值