数组指针问题,无聊学习指针编的,运算结果有问题!
请大家帮忙下,错误的问题就是我注释的第一行上的那个元素遍历的时候有问题,地址没错的话,是我的变量b要自减,但是我不会,好像*(m+a)到第三行元素的时#include <stdio.h>
void max(int n[][4],int v)
{
int a,b,max=0;
int *m;
m=n[0];
printf("%d\n",*m);
for(a=0;a<v;a++)
{
for(b=1;b<4;b++)
{ max=*(m+a)>*((m+a)+b)?*(m+a):*((m+a)+b);/*这里指针地址对吗,如果是对的,请各位帮忙想下变量b如何在跳到外层循环的时候初始化为1*/
printf("*(m+a)=%d\t",*(m+a));
printf("ys=%d\t",*((m+a)+b));
printf("max=%d\t",max);
}
}
printf("%d\n",max);
}
void main()
{
int s[][4]={
{5,2,3,4},
{16,27,39,48},
{33,-1,68,39}
};
max(s,3);
}
/*如果指针地址错误,请告诉我怎么表示,最好不要用这样的s[m][n]*/
/*一个问题是b从新运算不等于1造成的运算错误,或是把*(m+a)指向了max,总觉得执行第二次最外层循环的时候很奇怪,应该是指向第二行大的那个48的元素,但程序好像跳到了第一行第二个元素,大家请仔细看下运算的过程,帮我想想*/