char c[4]={1,2,3,4};
char * addr;
addr=c;
int k=*c;
请教:
addr是c的地址,c的地址是c[0]的地址,*c=c[0],那么&c,即对c取地址符操作,结果是什么呢?
(int*)&c=?? 和 *(int*)&c=??谢谢!

解决方案 »

  1.   

    (int*)&c=?? 还是c,
    后面一个就是c[0]&c其实是一个int **
      

  2.   

    int k=*c;这句话是不是有问题?
      

  3.   

    找了C++的书看了一下,总结一下:c[4]数组在内存中连续开辟了4块内存空间,分别对应变量c[0] c[1] c[2] c[3];
    c=&c[0]; &c 对数组变量取地址,要使其有意义,必须对这个地址进行强制转换;例如(char *)&c 将其转换成char*指针,则(char *)&c=&c[0],*(char *)&c=c[0]=1; 
    (int *)&c,把指针强制转化成int*,则4块32位连续的内存区域成了一块int型变量区域,则*(int*)&c=67305985,就是1,2,3,4对应32位后的int值
      

  4.   

    c是数组名,可以当数组的指针用,但是他和&c[0]即第一个元素的地址是有一定差别的。*c我想应该是第一个元素的值即c[0].