如果指针pr
指向数组aa = {1, 2, 3, 4, 5, 0, 0, 0, 0, 0}
,那么我们可以通过指针pr[0]
,pr[1]
,pr[2]
,...访问该数组。
我如何移动数组(通过指针操作),这样我才能得到{1, 1, 2, 3, 4, 5, 0, 0, 0, 0}
?显然,pr[i] = pr[i-1]
不会工作。
下面是我的代码:
#include <stdio.h>
int main() {
int aa[10] = {1, 2, 3, 4, 5, 0, 0, 0, 0, 0};
int i, m, *pr = aa;
printf("\n pr[0] = %d, pr[1] = %d, pr[2] = %d, pr[3] = %d", pr[0], pr[1], pr[2], pr[3]);
for(i = 0; i < 9; i++) {
m = *(pr + i);
pr[i+1] = m;
}
printf("\n \n pr[0] = %d, pr[1] = %d, pr[2] = %d, pr[3] = %d \n", pr[0], pr[1], pr[2], pr[3]);
printf("\n \n aa[0] = %d, aa[1] = %d, aa[2] = %d, aa[3] = %d \n", aa[0], aa[1], aa[2], aa[3]);
return(1);
}
我正在使用.Call
为R编写一个C函数,C函数中的所有数组都必须通过这种类型的指针来访问。我对C中指针的语法感到非常困惑。
发布于 2018-08-08 04:32:34
基本上,您希望在示例1
中添加一个值,并从数组中删除最后一个值,在示例中为0
。
如果你看看发生了什么,你会看到以下内容:
position: 0 1 2 3 4 5 6
starting: { a0 a1 a2 a3 a4 a5 a6 }
\ \ \ \ \ \
final: { b0 a0 a1 a2 a3 a4 a5 }
所以你想要按照你建议的那样移动每个值,但是你必须从最后开始(否则你会用相同的值覆盖所有的东西)。
for(i = 9; i > 0; i--) {
pr[i]=pr[i-1];
}
pr[0] = NEWVALUE;
https://stackoverflow.com/questions/51734845
复制相似问题