gpt4 book ai didi

C : Pointers and functions 2DArray

转载 作者:行者123 更新时间:2023-12-04 10:55:08 25 4
gpt4 key购买 nike

我真的是 C 编程语言的初学者,我已经开始学习指针了……我在操作它们时遇到了一些问题。我想做的是读写一个矩阵,有 2 个函数,不使用全局变量(只是指针)......所以我没有成功做到这一点。我搜索了很多关于指针的信息,我试图理解如何使用它们,但我无法读写那个矩阵我做错了什么......拜托,拜托,请帮助我(即使有一些有用的关于 2DArray 和指针的链接)...谢谢!

#include <stdio.h>
#include <stdlib.h>

void readM(int (*x)[100][100], int *row, int *column)
{
int i,j;
printf("Row no: ");
scanf("%d",row);
printf("Column no: ");
scanf("%d",column);
printf("Matrix elemnts: \n");
for(i=0;i<(*row);i++)
{
for(j=0;j<(*column);j++)
{
printf("[%d][%d]=",i,j);
scanf("%d",x[i][j]);
}
}
}

void writeM(int (*x)[][100], int *row, int *column)
{
int i,j;
printf("\nMatrix is: \n");
for(i=0;i<(*row);i++){
for (j=0;j<(*column);j++){
printf("%d",(*x)[i][j]);
}
printf("\n");
}
}

int main()
{

char choice;
int a[100][100],m,n;
do
{
printf("\nChose an option\n\n"
"1) read matrix \n"
"2) write matrix\n"
"3) display matrix in spiral\n"
"4) return max and min\n"
///...etc
scanf("%c", &choice);
while (choice<'0'|| choice>'4')
{
printf("\nInvalid option! Chose again! \n\n");
scanf("%c",&choice);
}
switch (choice)
{
case '0': exit(0);
case '1': readM(&a,&m,&n); break;
case '2': writeM(&a,&m,&n);break; /// ... etc
} while (choice !=5);
getch();
}

最佳答案

另一个问题是,当您读取数组时,您首先跟随指针 (*x),然后添加数组偏移量 [i][j]:这可能会让您到达某个您不知道的内存位置甚至无法访问。由于您要传递的是一个指针数组,因此您应该先查看数字位置 (x[i][j]),然后再跟随指针。

编辑:之前的用户更新了他的答案以反射(reflect)我在这里给出的第二个建议,所以我删除了它。

关于C : Pointers and functions 2DArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13212982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com