在for循环中使用指针

时间:2019-06-23 21:09:03

标签: c

我不确定如何将指针传递到此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;
}

2 个答案:

答案 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++){
..
}