c - 将二维数组除以函数中的常数
问题描述
我正在尝试创建一个将二维数组除以 2 的函数。我已经做到了,但它只划分了第一行。
//Header file
#ifndef divider
#define divider
void arrayDivider(float* a, int i, int j);
#endif
//declaration
#include <stdio.h>
#include "divider.h"
void arrayDivider(float* a, int i, int j){
int x,y;
for(x=0; x<i*j; x++){
a[x] = a[x] /2;
}
}
//main code
#include <stdio.h>
#include "divider.h"
int main(){
float array[100][100];
int i, j;
int x=0, y=0;
printf("Please enter rows of matrix => ");
scanf("%d", &i);
printf("Please enter columns of matrix => ");
scanf("%d", &j);
printf("Please enter elements of your matrix:\n");
for(x=0; x<i; x++){
for(y=0; y<j; y++){
scanf("%f", &array[x][y]);
}
}
arrayDivider(&array, i, j);
printf(" Your matrix\n------------------\n");
for(x=0; x<i; x++){
for(y=0; y<j; y++){
printf("%f ", array[x][y]);
}
printf("\n");
}
return 0;
}
我希望这会将每个值除以 2,但它只除第一行。我找不到问题出在哪里。这段代码有什么问题?
解决方案
随着arrayDivider(&array, i, j);
您将指针传递给 2D 数组(即 a float ***
),而不是 2D 数组本身。更正调用
arrayDivider(array, i, j);
并声明
void arrayDivider(float **a, int i, int j);
只是为了让您知道,在您使用 i 和 j 的地方使用 x 和 y 会更合乎逻辑,反之亦然。
推荐阅读
- installation - 离线安装 k3s
- php - 将数据放入 php 文件中
- javascript - 当用户点击一个按钮时,需要同时调用一个 JavaScript 函数和一个代码隐藏函数
- iphone - Django no referer CSRF 错误仅在 iPhone 上
- ecmascript-6 - Stripe - ReferenceError:未定义要求
- azure - 从静态文件 SPA 调用 Azure Function App
- python - 我正在尝试编写一个 Pig Latin 翻译器,它可以接收整个句子并翻译每个单词
- python - 将安装的 CPLEX 导入 Anaconda
- c# - 在没有焦点的控制台应用程序上记录空间
- angular - 使用 Charles-Proxy 错误状态重写是 -1 而不是 503