指向同一位置的指针

aka*_*h_c -1 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;
}
Run Code Online (Sandbox Code Playgroud)

我获得以下输出:

输出:
0:./ ex1 @ 0x7fff651da366
状态no.0:./ ex1 @ 0x7fff651d94d0

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

Som*_*ude 7

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