几道练习题
来源:互联网 发布:空军知乎 编辑:程序博客网 时间:2024/06/05 10:23
写出输出结果
输出:
1.
#include <stdio.h>void g(int**);int main(){ intline[10],i; int*p=line; //p是地址的地址 for(i=0;i<10;i++) { *p=i; g(&p);//数组对应的值加1 } for(i=0;i<10;i++) printf("%d\n",line[i]); return0;} void g(int**p){ (**p)++;//值++ (*p)++;//指针++}
输出:
1 2 3 4 5 6 7 8 9 10
2.
#include <stdio.h>int main(){int arr[] = {6,7,8,9,10};int *ptr = arr;*(ptr++)+=123;printf("%d \n", *ptr);printf("%d %d \n", *ptr, *(++ptr));return 0;}
输出:
7
8 8
过程:对于*(ptr++)+=123;先做加法6+123,然后++,指针指向7;对于printf(“ %d %d ”, *ptr, *(++ptr));从后往前执行,指针先++,指向8,然后输出8,紧接着再输出8
3.
#include <stdio.h>void foo(int m, int n){ printf("m=%d, n=%d\n", m, n);}int main(){ int b = 3; foo(b+=3, ++b); printf("b=%d\n", b);return 0;}
输出:m=7,n=4,b=7(VC6.0)
这种方式和编译器中得函数调用关系相关即先后入栈顺序。不过不同
编译器得处理不同。也是因为C标准中对这种方式说明为未定义,所以
各个编译器厂商都有自己得理解,所以最后产生得结果完全不同。
因为这样,所以遇见这种函数,我们首先要考虑我们得编译器会如何处理
这样得函数,其次看函数得调用方式,不同得调用方式,可能产生不同得
结果。最后是看编译器优化。
- 几道练习题
- 几道练习题
- 几道练习题
- 几道练习题
- 几道sql的练习题
- 几道有关图的练习题
- 几题java练习题。
- java基础2--数组与方法(几道练习题)
- java基础4--面向对象下(几道练习题)
- java基础部分的几道基础练习题
- 老师布置的几道SQL语句练习题
- 谈一谈Java8的函数式编程 (三) --几道关于流的练习题(转)
- 两道练习题
- 50道SQL练习题
- python 100道练习题
- 练习题
- 练习题
- 练习题
- oracle date类型字段建约束
- seajs学习(7)----文本插件
- tftp-架設 tftp server
- 13数组实现顺序堆栈的基本操作
- Spring事务配置的五种方式
- 几道练习题
- cocos2d-x工具篇-cocosbuilder
- ASP.NET 中的 Passport 身份验证提供程序
- 码农的自我修养-对编写简洁代码的理解
- 15数组实现顺序堆栈的括号匹配问题
- Newtonsoft.Json 用法
- hibernate性能调优(上)
- 线程池
- kernel与用户层接口之sysfs属性接口