我尝试使用指针更改数组元素,但是我失败了。 它没有改变 我该怎么办?
我尝试一些例子,例如**或&* 我不擅长C / C ++,我不知道哪里错了。 这是一个矩阵 B [0]是x B [1]是y
#include<cstdio>
#include<cstring>
#include<cstdlib>
int rotate(int A[10][10],int *PointerX,int *PointerY){
int x = *PointerX;
int y = *PointerY;
printf("into rotate\n");
printf("B:[%d][%d]",x,y);
int B[10][10];
initialize(B);
for(int i=0,m=x-1;i<=x;i++,m--){
for(int j=0;j<y;j++){
B[j][m] = A[i][j];
if(i==x&&j==y-1){
x = j+2;
y = i-1;
printf("\nA:[%d][%d]\n",x,y);
}
}
}
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
A[i][j] = B[i][j];
}
}
return 0;
}
int ScanData(int A[10][10],int operate[10000],int B[3]){
printf("DATA:\n");
scanf("%d%d%d",&B[0],&B[1],&B[2]);
for(int i=0;i<B[0];i++){
for(int j=0;j<B[1];j++){
scanf("%d",&A[i][j]);
}
}
for(int i = 0;i<B[2];i++){
scanf("%d",&operate[i]);
}
return B[2];
}
int main(){
int A[10][10];
initialize(A);
int operate[10000];
int B[3];
int operating = ScanData(A,operate,B);
for(int i=0;i<operating;i++){
if(operate[i]==0){
rotate(A,&B[0],&B[1]);
}else if(operate[i]==1){
flip(A,B[0],B[1]);
}
}
return 0;
}
我希望函数旋转可以更改B [0]和B [1] 但不是
答案 0 :(得分:1)
执行此操作时:
int x = *PointerX;
int y = *PointerY;
变量x
和y
包含B[0]
和B[1]
的 current 值。它们不是指针,因此当您以后分配给x
和y
时,您只是分配给副本。
删除x
和y
,并用*PointerX
和*PointerY
替换它们。
for(int i=0,m=*PointerX-1;i<=*PointerX;i++,m--){
for(int j=0;j<*PointerY;j++){
B[j][m] = A[i][j];
if(i==*PointerX&&j==*PointerY-1){
*PointerX = j+2;
*PointerY = i-1;
printf("\nA:[%d][%d]\n",*PointerX,*PointerY);
}
}
}