📄 s3c2410上移植的全过程详解.htm
字号:
<p><span><span> </span>if (x == 0.0)<span> </span></span></p>
<p><span><span> </span>if (x != 0.0)<span> </span><span> </span></span></p>
<p><span><span> </span></span></p>
</td>
</tr>
<tr>
<td valign="top" width="581" colspan="2">
<p><span>请写出</span> <span>char *p </span><span>与“零值”比较的</span><span> if </span><span>语句。(</span><span>3</span><span>分)</span></p>
</td>
</tr>
<tr>
<td valign="top" width="291">
<p><strong><span>标准答案:</span></strong></p>
<p><strong><span><span> </span>if </span></strong><strong><span>(p == NULL)</span></strong></p>
<p><strong><span><span> </span>if </span></strong><strong><span>(p != NULL)</span></strong></p>
</td>
<td valign="top" width="291">
<p><span>如下写法均属不良风格,不得分。</span></p>
<p><span><span> </span>if (p == 0)<span> </span></span></p>
<p><span><span> </span>if (p != 0)<span> </span><span> </span></span></p>
<p><span><span> </span>if (p) </span></p>
<p><span><span> </span><span> </span>if (!) <span> </span></span></p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p><strong><span>二、以下为</span><span>Windows NT</span></strong><strong><span>下的</span><span>32</span></strong><strong><span>位</span><span>C++</span></strong><strong><span>程序,请计算</span><span>sizeof</span></strong><strong><span>的值(</span><span>10</span></strong><strong><span>分)</span></strong></p>
<p> </p>
<p>
<table cellspacing="0" cellpadding="0" border="1">
<tbody>
<tr>
<td valign="top" width="284" rowspan="2">
<p><span><span> </span>char str[] = “Hello” ;</span></p>
<p><span><span> </span>char<span> </span>*p = str ;</span></p>
<p><span>int<span> </span>n = 10;</span></p>
<p><span>请计算</span></p>
<p><strong><span>sizeof (str ) = 6<span> </span></span></strong><strong><span>(</span><span>2</span></strong><strong><span>分)</span><span> </span></strong></p>
<p><strong><span><span> </span><span> </span></span></strong></p>
<p><strong><span>sizeof ( p ) =<span> </span>4<span> </span></span></strong><strong><span>(</span><span>2</span></strong><strong><span>分)</span></strong></p>
<p><strong><span><span> </span><span> </span></span></strong></p>
<p><strong><span>sizeof ( n ) =<span> </span>4<span> </span></span></strong><strong><span>(</span><span>2</span></strong><strong><span>分)</span></strong></p>
</td>
<td valign="top" width="284">
<p><span>void Func ( char str[100])</span></p>
<p><span>{</span></p>
<p><span>请计算</span></p>
<p><span><strong>sizeof( str ) =<span> </span>4 <span> </span></strong></span><strong><span>(</span><span>2</span></strong><strong><span>分)</span></strong></p>
<p><span>}</span></p>
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="284">
<p><span>void *p = malloc( 100 );</span></p>
<p><span>请计算</span></p>
<p><strong><span>sizeof ( p ) = 4<span> </span></span></strong><strong><span>(</span><span>2</span></strong><strong><span>分)</span></strong></p>
<p> </p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p><strong><span>三、简答题(</span><span>25</span></strong><strong><span>分)</span></strong></p>
<p> </p>
<p><span>1</span><span>、头文件中的</span> <span>ifndef/define/endif </span><span>干什么用?(</span><span>5</span><span>分)</span></p>
<p><strong><span>答:防止该头文件被重复引用。</span></strong></p>
<p> </p>
<p><span>2</span><span>、</span><span>#include <filename.h><span> </span></span><span>和</span><span> #include “filename.h” </span><span>有什么区别?(</span><span>5</span><span>分)</span></p>
<p><strong><span>答:对于</span><span>#include <filename.h> </span></strong><strong><span>,编译器从标准库路径开始搜索</span> <span>filename.h</span></strong></p>
<p><strong><span><span> </span></span></strong><strong><span>对于</span><span>#include “filename.h” </span></strong><strong><span>,编译器从用户的工作路径开始搜索</span> <span>filename.h</span></strong></p>
<p> </p>
<p><span>3</span><span>、</span><span>const </span><span>有什么用途?(请至少说明两种)(</span><span>5</span><span>分)</span></p>
<p><strong><span>答:(</span><span>1</span></strong><strong><span>)可以定义</span> <span>const </span></strong><strong><span>常量</span></strong></p>
<p><strong><span>(</span><span>2</span></strong><strong><span>)</span><span>const</span></strong><strong><span>可以修饰函数的参数、返回值,甚至函数的定义体。被</span><span>const</span></strong><strong><span>修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。</span></strong></p>
<p> </p>
<p><span>4</span><span>、在</span><span>C++ </span><span>程序中调用被</span> <span>C</span><span>编译器编译后的函数,为什么要加</span> <span>extern “C”</span><span>?</span> <span>(</span><span>5</span><span>分)</span></p>
<p><strong><span>答:</span><span>C++</span></strong><strong><span>语言支持函数重载,</span><span>C</span></strong><strong><span>语言不支持函数重载。函数被</span><span>C++</span></strong><strong><span>编译后在库中的名字与</span><span>C</span></strong><strong><span>语言的不同。假设某个函数的原型为:</span> </strong><strong><span>void foo(int x, int y);</span></strong></p>
<p><strong><span>该函数被</span><span>C</span></strong><strong><span>编译器编译后在库中的名字为</span><span>_foo</span></strong><strong><span>,</span></strong><strong><span>而</span><span>C++</span></strong><strong><span>编译器则会产生像</span><span>_foo_int_int</span></strong><strong><span>之类的名字。</span></strong></p>
<p><strong><span>C++</span></strong><strong><span>提供了</span><span>C</span></strong><strong><span>连接交换指定符号</span><span>extern</span></strong><strong><span>“</span><span>C</span></strong><strong><span>”来解决名字匹配问题。</span></strong></p>
<p> </p>
<p><strong><span>5</span></strong><strong><span>、请简述以下两个</span><span>for</span></strong><strong><span>循环的优缺点(</span><span>5</span></strong><strong><span>分)</span></strong></p>
<p> </p>
<p>
<table cellspacing="0" cellpadding="0" border="1">
<tbody>
<tr>
<td valign="top" width="268">
<p><span>for (i=0; i<N; i++)</span></p>
<p><span>{</span></p>
<p><span>if (condition)</span></p>
<p><span><span> </span>DoSomething();</span></p>
<p><span>else</span></p>
<p><span><span> </span>DoOtherthing();</span></p>
<p><span>}</span></p>
</td>
<td valign="top" width="283">
<p><span>if (condition)</span></p>
<p><span>{</span></p>
<p><span>for (i=0; i<N; i++)</span></p>
<p><span><span> </span>DoSomething();</span></p>
<p><span>}</span></p>
<p><span>else</span></p>
<p><span>{</span></p>
<p><span><span> </span>for (i=0; i<N; i++)</span></p>
<p><span><span> </span>DoOtherthing();</span></p>
<p><span>}</span></p>
</td>
</tr>
<tr>
<td valign="top" width="268">
<p><strong><span>优点:程序简洁</span></strong></p>
<p><strong></strong></p>
<p><strong><span>缺点:多执行了<span>N-1</span>次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。</span></strong></p>
</td>
<td valign="top" width="283">
<p><strong><span>优点:循环的效率高</span></strong></p>
<p><strong></strong></p>
<p><strong><span>缺点:程序不简洁</span></strong></p>
<p><strong></strong></p>
<p><strong></strong></p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p><strong><span>四、有关内存的思考题(每小题</span><span>5</span></strong><strong><span>分,共</span><span>20</span></strong><strong><span>分)</span></strong></p>
<p><strong></strong></p>
<p>
<table cellspacing="0" cellpadding="0" border="1">
<tbody>
<tr>
<td valign="top" width="291">
<p><span>void GetMemory(char *p)</span></p>
<p><span>{</span></p>
<p><span>p = (char *)malloc(100);</span></p>
<p><span>}</span></p>
<p><span>void Test(void) </span></p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -