有没有办法使用指针指向数组的第一个元素,然后循环直到数组末尾?
#include <stdio.h>
int main(){
int A[50][50][50];
int sum;
int i,j,k;
int row,column,depth;
int *ptr;
do {
printf("Please input row: ");//row
scanf("%d", &row);
printf("Please input column: ");//column
scanf("%d", &column);
printf("Please input depth: ");//depth
scanf("%d", &depth);
if (row <= 0 || column <=0 || depth <=0) {
printf("Wrong input!!!\n");
}
} while (row <= 0);
printf("Row is equal to:%d\n", row);
printf("Column is equal to:%d\n", column);
printf("Depth is equal to:%d\n", depth);
for (i=0;i<row ;i++) {
for(j=0;j<column;j++){
for(k=0;k<depth;k++){
printf("Please input value for Array[%d][%d][%d]: ", i + 1,j+1,k+1);
scanf("%d", &A[i][j][k]);
}
}
}
ptr = &A[0][0][0];
printf("\nThe sum of all elements is: %d\n", sum);
}
我正在尝试使用指针计算所有元素的总和并尝试使用循环,但它不起作用是否还有其他方法可以访问它
这是我的循环的样子。
for(i=0;i<row;i++){
sum+=*(ptr+i);
for(j=0;j<column;j++){
sum+=*(ptr+j);
for(k=0;k<depth;k++){
sum+=*(ptr+k);
}
}
}
我目前正在学习 C 编程中的指针课程,所以我只知道基础知识。
您需要正确索引指针并确保正确访问 3D 数组的元素。您当前的实现在指针算术方面存在一些问题。
看这段代码
#include <stdio.h>
int main() {
int A[50][50][50];
int sum = 0;
int i, j, k;
int row, column, depth;
int *ptr;
do {
printf("Please input row: ");
scanf("%d", &row);
printf("Please input column: ");
scanf("%d", &column);
printf("Please input depth: ");
scanf("%d", &depth);
if (row <= 0 || column <= 0 || depth <= 0) {
printf("Wrong input!!!\n");
}
} while (row <= 0 || column <= 0 || depth <= 0);
printf("Row is equal to: %d\n", row);
printf("Column is equal to: %d\n", column);
printf("Depth is equal to: %d\n", depth);
for (i = 0; i < row; i++) {
for (j = 0; j < column; j++) {
for (k = 0; k < depth; k++) {
printf("Please input value for Array[%d][%d][%d]: ", i + 1, j + 1, k + 1);
scanf("%d", &A[i][j][k]);
}
}
}
ptr = &A[0][0][0];
for (i = 0; i < row; i++) {
for (j = 0; j < column; j++) {
for (k = 0; k < depth; k++) {
sum += *ptr;
ptr++;
}
}
}
printf("\nThe sum of all elements is: %d\n", sum);
return 0;
}
确保将 sum 初始化为 0 不要为每个维度使用单独的循环,并记住指针直接在最内层循环内递增 访问 *ptr 处的值后,递增 ptr 以指向下一个整数 确保在 do while 循环中检查所有维度的正值