指向同一位置的指针

时间:2014-08-10 15:21:47

标签: c pointers

我一直在努力解决这个问题。

复制字符串数组时,如下面的代码所示:

#include <stdio.h>

int main (int argc, char* argv[])
{
    int i = 0;

    for (i = 0; i < argc; i++)
    {
        printf ("%d: %s @ %p \n",i,argv[i],argv[i]);
    }

    char* states[7];                                                        

    for (i = 0; i <argc; i++)
    {
        states[i] = argv[i];      // line 36
        printf ( "State no.%d: %s @ %p \n", i ,states[i],&states[i]);
    }   
    return 0;
}

我获得以下输出:

  

输出:
  0:./ ex1 @ 0x7fff651da366
  州号0:./ ex1 @ 0x7fff651d94d0

输出中的地址不应该与我在使两个指针指向同一地址的代码的第36行相同吗?

1 个答案:

答案 0 :(得分:7)

表达式&states[i]为您提供了states[i]在内存中的位置,而不是它所指向的位置。删除address-of运算符以解决问题。