如何使用指针更改数组元素
how to use pointer change array element
我尝试使用指针更改数组元素,但我失败了。它没有改变我该怎么办?
我尝试一些示例,例如**或&*我不擅长C/C++,我不知道我错在哪里。这是一个矩阵B[0] 是 xB[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 rotaten");
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]但不是
当你这样做时:
int x = *PointerX;
int y = *PointerY;
变量 x
和 y
包含当前值 B[0]
和 B[1]
。 它们不是指针,因此当您稍后分配给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);
}
}
}
相关文章:
- 从指向结构数组的指针中提取元素
- 存储指向动态数组元素的指针
- C++通过别名指针以静默方式将错误的类型分配给数组元素
- 使用指针访问数组元素时出现意外结果
- 指针数组.获取指针元素的值
- 指向数组的指针是否应该等于指向其第一个元素的指针?
- 如何理解取消引用指向数组的指针会获取指向元素的指针
- 如何使用指针更改数组元素
- 通过指针访问数组元素
- C 中的动态数组(用指针表示) - 输入元素
- 字符指针对象和相应的字符数组元素比较
- 无法访问指向数组的指针的元素
- 指向数组的指针会更改数组元素的值
- C++如何使用指针来循环移位数组元素
- 从 C++ 数组元素的指针获取索引的最快方法是什么
- 当我删除数组时,指针在哪里?指向数组的指针与数组中的元素之间的区别
- 从C++中的指针访问数组元素
- 数组元素值,元素地址和指针增量
- 返回指向指针数组的指针获取下一个元素失败
- 数组的指针,该数组的每个元素的内存空间信息存储在哪里