C语言指针问题

[复制链接]
查看11 | 回复4 | 2013-1-24 11:43:30 | 显示全部楼层 |阅读模式
这个问题实际上是个编译问题,当我们定义a[5]数组时,就告诉编译器有5个连续单元要用到,它们的首地址是a,那么编译器就记住了:以后程序中引用a时,就用这个首地址替代,所以a是你给这个数组起的名字,以便以后用来编程计算,而编译器就会自动把程序中所有a替换成实际地址来用。编译器不必另开设存储器来保存a,它拿a当成一个地址的宏定义来用。...
回复

使用道具 举报

千问 | 2013-1-24 11:43:30 | 显示全部楼层
数组和指针不能等价理解,指针常量根本不需要存储空间,直接用就可以,看下面的内存图:...
回复

使用道具 举报

千问 | 2013-1-24 11:43:30 | 显示全部楼层
数组a是首地址没错,但是一个地址常量,并不是一个指向数组a首地址的指针。也就是a是一个地址常量,不能通过赋值修改a的值。...
回复

使用道具 举报

千问 | 2013-1-24 11:43:30 | 显示全部楼层
a与&a值是一样,仅仅拿a与&a来比较当然比较不出什么东西你拿a+1 与&a+1来比较,问题就来了两者,只能说值一样,但意义不一样参考如下代码:intmain(){int a[5]={1,2,3,4,5};int *ptr1=(int*)(&a+1);int *ptr2=(int*)(a+1);printf("%x...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行