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

addfourliu 2012-09-22 04:10:15
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?
...全文
112 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
addfourliu 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

楼主还是找些基础的书看看吧、、、
[/Quote]

恩啊 是该。。。
addfourliu 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

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

3Q
haltwang 2012-09-23
  • 打赏
  • 举报
回复
我记得当初看指针的时候写过一点感受,你要觉得有用就去看看
http://blog.sina.com.cn/s/blog_9da24f3b01013199.html
觉得小儿科就算了,嘿嘿
haltwang 2012-09-23
  • 打赏
  • 举报
回复
定义一个array[]数组后,array就自动默认为一个指针,指向array[0]。
即:array = &array[0]
那为什么还要定义一个p让他等于array呢?
int *p;
p=array;
因为这里的数组名array虽然值是指针,但和指针有所不同。
最容易发现的不同是array不能改变,即不能执行array++ array = a+1这样的赋值运算。
你想想他是一个数组的位置当然不能随意改变了。
另外array还跟指针有一些不通的地方,例如二维数组里面,array还要包扩第二维数据有多少个的信息,而指针只需要包括两个信息:内存地址、所占空间大小(容易被忽略的)。
fzamygsd 2012-09-23
  • 打赏
  • 举报
回复
楼主还是找些基础的书看看吧、、、

16,213

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧