请大家看看数组各元素地址的问题

wolongchuhai 2009-11-11 10:01:40
先看这段程序
#include<stdio.h>
void main()
{
int stu[3],i;
char s[3];
for(i=0;i<3;i++)
{ printf("%d\n",&stu[i]);

}
for(i=0;i<3;i++)
{
printf("%d\n",&s[i]);
}
}
整形数组元素的地址连续相差4,字符数组的元素地址相差1
=====================================================
再看下面的一段程序
栈内元素的出栈
pop(sqstack *s,int *e)
{ int *p;
if(s->top==s->tran)
{ printf("the stack is empty!\n");
exit(0);
}
p=s->top-1;*e=*p;s->top--;
}
top是栈顶指针,top--按“--”运算符的定义应为地址减一与上面的那段程序整形数组元素相差4有违,而按程序运行结果top--应为上一个数组元素的地址让人有点迷惑,请大家帮忙看一下啊!

...全文
142 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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