这条c语言程序为什么每次运行的结果都不一样呢?

#include<stdio.h>voidswap(int*p1,int*p2);/*函数声明*/voidmain(){inta1,a2;/*定义变量*/int*ptr1... #include<stdio.h>void swap(int *p1, int*p2);/*函数声明*/void main(){ int a1, a2;/*定义变量*/ int *ptr1, *ptr2;/*定义指向整型变量的指针*/ printf("请输入两个整型数:\n"); scanf("%d,%d", &a1, &a2);/*输入a1和a2的值*/ ptr1 = &a1;/*ptr1指向a1*/ ptr2 = &a2;/*ptr2指向a2*/ printf("&a1=%p,&a2=%p\n", &a1, &a2);/*输出a1和a2的地址*/ printf("ptr1=%p,ptr2=%p\n", ptr1, ptr2);/*输出ptr1和ptr2的值*/ swap(ptr1, ptr2);/*函数调用。指针变量ptr1和ptr2作为hansd参数*/ printf("a1=%d,a2=%d\n", a1, a2);/*输出a1和a2的值*/ printf("*ptr1=%d,*ptr2=%d\n", ptr1, ptr2);/*输出ptr1和ptr2的值*/ printf("&a1=%p,&a2=%p\n", &a1, &a2);/*输出a1和a2的地址*/ printf("ptr1=%p,ptr2=%d\n", ptr1, ptr2);/*输出ptr1和ptr2的值*/}void swap(int *p1, int *p2){ int t; /*--------------hu----------------*/ t = *p1; *p1 = *p2; *p2 = t;}每次运行结果都会不一样,运行十次就会有10个不同的结果 展开
 我来答
lest12345
2016-09-13 · TA获得超过1441个赞
知道小有建树答主
回答量:1064
采纳率:100%
帮助的人:762万
展开全部
因为打印的是内存地址,每次程序运行的时候开辟的空间位置都不一样,所以地址每次都不一样
追问
如果我把程序下载到单片机,如51之类的单片机上,每次内存的地址都会改变吗?
追答
这个我也没试过,如果不重启的话,应该是不后悔变的。你试一下看看
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式