当前位置: 代码迷 >> QT开发 >> 数组和指针有些有关问题还是不理解。
  详细解决方案

数组和指针有些有关问题还是不理解。

热度:30   发布时间:2016-04-25 04:30:23.0
数组和指针有些问题还是不理解。。。。。。。。。。
void main()
{
  int array[16]={1,2,3,4};
printf("array's address is %x\n",array);
printf("array's address is %x\n",&array);
int *p;
p=array;
printf("p is %d\n",p);
printf("&p is %d\n",&p);
p=(int*)&array;
printf("p is %d\n",p);
printf("&p is %d\n",&p);
}

不太理解p = array;这句话什么意思?
我先按照自己的理解,说说自己的想法?有不对的地方,还望不吝赐教
p=array 是将数组地址赋值给指针p,这和指针p指向数组有什么不同?(不同?相同?)

数组地址赋值给p,那么p的值和&array是不是相同的呢?(不同?相同?),显然从输出结果上看,是不同的。。。



============================================分隔线==============================================


如果将上面数组改成字符型,又会怎样呢?

void main()
{
  char array[]="hello";
printf("array's address is %x\n",array);
printf("array's address is %x\n",&array);
int *p;
p=array;
printf("p is %d\n",p);
printf("&p is %d\n",&p);
p=(int*)&array;
printf("p is %d\n",p);
printf("&p is %d\n",&p);
}


int array[]输出array的值时,是地址,而char array[]输出array时,却是“hello”。。。
why?

------解决方案--------------------
我记得当初看指针的时候写过一点感受,你要觉得有用就去看看
http://blog.sina.com.cn/s/blog_9da24f3b01013199.html
觉得小儿科就算了,嘿嘿
  相关解决方案