我一直在努力解决这个问题已有一段时间了.
复制字符串数组时,如下面的代码:
#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行相同吗?