我一直在努力解决这个问题。
复制字符串数组时,如下面的代码所示:
#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行相同吗?
答案 0 :(得分:7)
表达式&states[i]
为您提供了states[i]
在内存中的位置,而不是它所指向的位置。删除address-of运算符以解决问题。