我不确定如何将指针传递到此for循环中,因此不会获得随机内存值。在printf中使用指针可以在for循环之外正常运行,但不能在内部运行。
查看后,我不确定是否使用*或&运算符传递变量。
#include <stdio.h>
int main()
{
int mat1[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int mat2[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int *mat1pnt=&mat1[0][0];
printf("%d\n",*(mat1pnt));//works fine without for loop
int i=0;
int j=0;
for(i==0;i<=2&&j<=2;j++,&mat1pnt)
{
printf("%d",&mat1pnt);
}
//int *mat1pnt=&mat
return 0;
}
答案 0 :(得分:0)
您不能像使用函数那样将值传递到for
循环中(并非所有带有大括号的都表示一个函数)。 for
循环是一个代码块,除了定义自己的变量外,还可以访问定义在该块嵌入位置的变量。
似乎您想使用指针来迭代2D数组。要访问值,您需要取消引用指针(即运算符*
)。要使指针移动到下一个元素,请将其递增(运算符++
)。并且您需要迭代#columns x #rows
项,即您的情况下的3*3
:
for(int i=0; i<3*3; i++)
{
printf("%d",*mat1pnt); // dereference, i.e. get the value
mat1pnt++; // move pointer to the next value
}
答案 1 :(得分:-2)
single = for循环中的运算符。 从循环中删除“&mat1pnt”。
for(i=0,i<=2&&j<=2;j++){
..
}