数组和指针有些问题还是不理解。。。。。。。。。。
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
觉得小儿科就算了,嘿嘿