请教c语言指针小问题,谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/17 05:19:35
我定义了三个指针:
int *ptr1,*ptr2,*ptr3;
printf("&ptr1=%p,&ptr2=%p,&ptr3=%p",&ptr1,&ptr2,&ptr3);
为什么ptr3的地址最小,而ptr1地址最大呢?
?应该和操作系统里内存的管理机制有关吧?总应该有原因的吧?只是想不明白,如果变量是先创建的地址小。。。。。可是指针。。。不明白,多谢您的回答!

栈不是先进后出吗?队列是先进先出?
大家好;
可能我没有说清楚,现在我再解释一下,
栈在动态为变量分内存的时候,地址一般是从小到大的,这可以测试出来;
指针是在栈中为了存放地址而开辟的内存,
我不明白的是:
这些内存的地址为什么是从大到小的呢?
期盼大家的帮忙。。。。

等了好多天了,一直没有人给与回答。。。
系统之所有没有采用和变量同样的方式,到底为什么呢?

不错,栈是先进后出。
你说,如果是变量你可以理解,指针就不明白。那么,在你看来,指针是什么?其实,指针用来存储一个内存地址,是一个int型变量。

那东西完全有系统分配~管他呢~

你这样定义的指针是栈给它分配地址空间。 栈是先进先出。 所以地址依次减小,。如果你用 *ptr1=new 这样分配则为堆分配地址。

一般动态申请的空间都是在堆中分配的,而不是动态的空间一般是在栈中分配,栈是先进后出,,队列是先进先出。

因为有的C系统是在计算PRITFU时候从右边到左开始计算,输出则再从左到右