弓长岭网站建设,简单的管理系统有哪些,什么是百度搜索推广,有没有99块钱做网站来#xff0c;猜猜看#xff0c;这里的执行结果是什么#xff1f; 这是今天课上的一道理解题#xff0c;给大家一点点思考时间。
#xff08;心里有答案了再往下滑哦#xff09;
5
4
3
2
1
.
答案是#xff0c;报warning#xff01;因为%d不是用来输出指针的哈… 来猜猜看这里的执行结果是什么 这是今天课上的一道理解题给大家一点点思考时间。
心里有答案了再往下滑哦
5
4
3
2
1
.
答案是报warning因为%d不是用来输出指针的哈哈哈
不过如果忽略warning呢
那么最终答案是5 为什么是 5
1 1 5
哈哈别急让我们来进行一些简单的实验。
#includestdio.h
int main()
{printf(%d\n, (int *)1 1); // 输出5//接下来把%d改为%p,输出地址printf(%p\n, (int *)1 1); // 输出0x5printf(%p\n, (int *)1 2); // 输出0x9printf(%p\n, (int *)2 1); // 输出0x6printf(%p\n, (int *)2 2); // 输出0xaprintf(%p\n, (int *) (1 1) ); // 输出0x2return 0 ;
} 多实验几次就会明显发现
第一个数每1地址增加1
第二个数每1地址就增加4
而int*)(11) 也就是int*2指向的就是地址2
所以系统应该是先执行int*1将指针指向地址1然后再执行1使指针指向当前地址的下一个位置因为int占4个字节所以指针每次跳4个所以最终指向14,也就是地址5的位置。
如果将int改为其他类型也是同样)
#includestdio.h
int main()
{printf(%d\n, (int *)1 1); //int 占4字节输出5printf(%d\n, (short *)1 1); //short 占2字节输出3printf(%d\n, (long long i*)1 1); //long long 占8字节输出9return 0 ;
} 以上是我的个人理解欢迎大佬们前来赐教~