请大家看看数组各元素地址的问题
先看这段程序
#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--应为上一个数组元素的地址让人有点迷惑,请大家帮忙看一下啊!