C-指向数组的指针:如何仅将一个指针的值(而非地址)复制到另一指针?

时间:2018-08-07 20:23:53

标签: c arrays pointers

如果指针// Make connection var socket = io.connect('http://ip'); // Query DOM var message = document.getElementById('message'); handle = document.getElementById('handle'), btn = document.getElementById('send'), output = document.getElementById('output'); // Emit events btn.addEventListener('click', function(){ //client.request.headers.cookie //console.log(client.request.headers.cookie) socket.emit('chat', { message: message.value, handle: handle.value }); }); //Listen for events socket.on('chat', function(data) { output.innerHTML += '<p><strong>' + data.handle + ': </strong>' + data.message + '</p>'; }); 指向数组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); } 为R编写C函数,必须通过这种类型的指针访问C函数中的所有数组。而且我对C语言中的指针语法感到非常困惑。

1 个答案:

答案 0 :(得分:1)

您基本上想在示例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;