C语言如何验证M[][]中的位置是否有效?
in C language, how to verfify if the position in M[][] is valid?
伙计们,你知道我什么时候尝试访问这样的职位吗:
M[-2][-1],不要工作,
但是,如果我们尝试像这样访问:
int k = -2;
M[k][k+1],作品?
我正在做作业,我需要验证 M 位置是否在一些随机数 I 和 J 的基础上有效。
#include <stdio.h>
int main(){
int matriz[5][5];
int i, j;
int cont = 0;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
matriz[i][j] = cont+=1;
}
}
for(i=0;i<5;i++){
for(j=0;j<5;j++){
printf("%d ",matriz[i][j]);
}
printf("\n");
}
int k = -2;
//matriz[-2][-1] = 99; << dont work
matriz[k][k+1] = 99; // << this works
printf("\n%d",matriz[k][k+1]); << this works
printf("\n\n");
for(i=0;i<5;i++){
for(j=0;j<5;j++){
printf("%d ",matriz[i][j]); //<< and this dont change anything on matriz
}
printf("\n");
}
}
它在编译器中可能允许它“工作”,但不要这样做,因为您正在更改不属于该数组的内存,并且很可能会导致崩溃或更糟。
您可以通过传入 i
和 j
以及行数和列数来检查函数。
if (i >= 0 && j >= 0 && i < MAX_ROWS && j < MAX_COLS) {
matriz[i][j] ... do something
} else {
invalid
}
伙计们,你知道我什么时候尝试访问这样的职位吗:
M[-2][-1],不要工作,
但是,如果我们尝试像这样访问:
int k = -2;
M[k][k+1],作品?
我正在做作业,我需要验证 M 位置是否在一些随机数 I 和 J 的基础上有效。
#include <stdio.h>
int main(){
int matriz[5][5];
int i, j;
int cont = 0;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
matriz[i][j] = cont+=1;
}
}
for(i=0;i<5;i++){
for(j=0;j<5;j++){
printf("%d ",matriz[i][j]);
}
printf("\n");
}
int k = -2;
//matriz[-2][-1] = 99; << dont work
matriz[k][k+1] = 99; // << this works
printf("\n%d",matriz[k][k+1]); << this works
printf("\n\n");
for(i=0;i<5;i++){
for(j=0;j<5;j++){
printf("%d ",matriz[i][j]); //<< and this dont change anything on matriz
}
printf("\n");
}
}
它在编译器中可能允许它“工作”,但不要这样做,因为您正在更改不属于该数组的内存,并且很可能会导致崩溃或更糟。
您可以通过传入 i
和 j
以及行数和列数来检查函数。
if (i >= 0 && j >= 0 && i < MAX_ROWS && j < MAX_COLS) {
matriz[i][j] ... do something
} else {
invalid
}