一维指针;行指针;指针数组求二维数组的和
理解了每一步为什么可以赋值即可掌握,建议看过其他基础教程再来这里慢慢读代码,读完即可掌握
//j表示第几行,i表示该行第几个数。
//*一下表示到了第某行,**两下代表矩阵里面具体某个数字
废话不多说上代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int sum = 0;
int b[2][3] = { {1,1,1} ,{1,1,1} };
//一维指针
int* p = &b[0][0];
for (int i = 0; i < 2 * 3; i++)
{
sum += *(p + i);
}
printf("sum = %d\n", sum);
//行指针
sum = 0;
int(*q)[3] = b;
//sum = sum +( *((*p) + i)); 这样写好像不可以;二维数组跳转到第二行需要行指针来跳转
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
sum = sum + *((p + i) + j);
}
}
printf("sum = %d\n", sum);
//指针数组
sum = 0;
int* r[2] = { b[0], b[1] };
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
sum = sum + *((*(r + i))+j);
}
}
printf("sum = %d\n", sum);
return 0;
}