没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
1、局部变量能否和全局变量重名?
答:能,局部会屏蔽全局。要用全局变量,需要使用"::"局部变量可以与全局变量同名,在
函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器
而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同
名的局部变量,而那个局部变量的作用域就在那个循环体内
2、如何引用一个已经定义过的全局变量?
答:extern 可以用引用头文件的方式,也可以用 extern 关键字,如果用引用头文件方式来
引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,
如果你用 extern 方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连
接期间报错
3、全局变量可不可以定义在可被多个.C 文件包含的头文件中?为什么?
答:可以,在不同的 C 文件中以 static 形式来声明同名全局变量。可以在不同的 C 文件中
声明同名的全局变量,前提是其中只能有一个 C 文件中对此变量赋初值,此时连接不会出
错
4、语句 for( ;1 ;)有什么问题?它是什么意思?
答:和 while(1)相同。
5、do……while 和 while……do 有什么区别?
答:前一个循环一遍再判断,后一个判断以后再循环
6.不能做 switch()的参数类型是:
switch 的参数不能为实型
7、static 全局变量与普通的全局变 量有什么区别?static 局部变量和普通局部变量有什么区
别?static 函数与普通函数有什么区别?
全局变量(外部变量)的说明之前再冠以 static 就构成了静态的全局变量。全局变量本身就是
静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这
两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组
成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域,
即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态
全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在
其它源文件中引起错误。从以上分析可以看出, 把局部变量改变为静态变量后是改变了它
的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限
制了它的使用范围。static 函数与普通函数作用域不同。仅在本文件。只在当前源文件中使
用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可
在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包
含这个头文件
8:填空:程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请
数据存在于( 堆)中。
9.Heap 与 stack 的差别。Heap 是堆,stack 是栈。Stack 的空间由操作系统自动分配/释放,
Heap 上的空间手动分配/释放。Stack 空间有限,Heap 是很大的自由存储区:
10. 用宏定义写出 swap(x,y)#define swap(x, y)\x = x + y;\y = x - y;\x = x - y;
11:请计算输出结果:
main(){int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);printf("%d,%d",*(a+1),*(ptr-1));}
输出:2,5
12:对绝对地址 0x100000 赋值 1234。答:(unsigned int*)0x100000 = 1234;那么要是想让程
序跳转到绝对地址是 0x100000 去执行,应该怎么做?答:*((void (*)( ))0x100000 ) ( );
13:下面代码输出什么
char *ptr; if ((ptr = (char *)malloc(0)) == NULL) puts("Got a null pointer"); else puts("Got a valid
pointer");
答 Got a valid pointer
14、下面的程序看起来是正常的,使用了一个逗号表达式来做初始化。可惜这段程序是有
问题的。你知道为什么呢?
#include <stdio.h>int main(){ int a = 1,2; printf("a : %d\n",a); return 0;}
参考答案:这个程序会得到编译出错(语法出错),逗号表达式是没错,可是在初始化和
变量声明时,逗号并不是逗号 表达式的意义。这点要区分,要修改上面这个程序,你需要
加上括号: int a = (1,2);
15、请说出下面的程序输出是多少?并解释为什么?
#include <stdio.h>int main(){ int a=1; switch(a) { int b=20; case 1: printf("b is %d\n",b); break;
default: printf("b is %d\n",b); break; } return 0;}
答:该程序在编译时,可能会出现一条 warning: unreachable code at beginning of switch
statement。我们以为进入 switch 后,变量 b 会被初始化,其实并不然,因为 switch-case 语
句会把变量 b 的初始化直接就跳过了。所 以,程序会输出一个随机的内存值。
16 、 请 写 出 下 列 代 码 的 输 出 内 容 #include<stdio.h>main(){int a,b,c,d;a=10;b=a++;c=+
+a;d=10*a++;printf("b,c,d:%d,%d,%d",b,c,d);return 0;} 答:10,12,120
17
char * const p;char const * pconst char *p
上述三个有什么区别?
答:char * const p; //常量指针,p 的值不可以修改 char const * p;//指向常量的指针,指向
的常量值不可以改 const char *p; //和 char const *p
18:
已知一个数组 table,用一个宏定义,求出数据的元素个数 #define NTBL#define NTBL
(sizeof(table)/sizeof(table[0]))
19: 下面的一段程序有什么错误:swap( int* p1,int* p2 ){ int *p; *p = *p1; *p1 = *p2;
*p2 = *p;}
答:在 swap 函数中,p 是一个“野”指针,有可能指向系统区,导致程序运行的崩溃
20:写一个 strcpy 函数。
答:
2 分 void strcpy( char *strDest, char *strSrc ){ while( (*strDest++ = * strSrc++) != ‘\0’ );}
4 分 void strcpy( char *strDest, const char *strSrc )//将源字符串加 const,表明其为输入参数,
加 2 分{ while( (*strDest++ = * strSrc++) != ‘\0’ );} 7 分 void strcpy(char *strDest, const
char *strSrc){ //对源地址和目的地址加非 0 断言,加 3 分 assert( (strDest != NULL) &&
(strSrc != NULL) ); while( (*strDest++ = * strSrc++) != ‘\0’ );} 10 分//为了实现链式操作,
将目的地址返回,加 3 分!char * strcpy( char *strDest, const char *strSrc ){ assert( (strDest !
= NULL) && (strSrc != NULL) ); char *address = strDest; while( (*strDest++ = * strSrc++) !
= ‘\0’ ); return address;}
21:#include "stdio.h"int main(){int a;int *p;
p = &a;*p = 0x500;a = (int )(*(&p));a = (int )(&(*p));if(a == (int)p) printf("equal !\n");else
printf("not equal !\n");}请问本程序的输出显示是什么?答案:输出显示为”equal!”
22:struct a {int x; char y; struct a z; struct a *p; } 请问这种定义结构正
确否? 如果有问题,问题在哪里?答案:结构中不能对定义结构本身的非指针变量,如果
编译器支持则会导致无限嵌套,因此一般编译器都会认为 struct a 是未定义的类型,即使提
前声明也不会有任何用处。
23.包含预定义头文件< > 和" "的区别?答案:< >只在指定的目录里寻找被包含文
件;" "先在当前目录下查找 ,再在指定目录下查找;通常<>方式用于系统的头文件,而一
般用户的头文件用" "的方式。
24: 用 预 处 理 指 令 #define 声 明 一 个 常 数 , 用 以 表 明 1 年 中 有 多 少 秒 ( 忽 略 闰 年 问
题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
细节: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得
预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不
是计算出实际的值,是更清晰而没有代价的。 3). 意识到这个表达式将使一个 16 位机的整
型数溢出-因此要用到长整型符号 L,告诉编译器这个常数是的长整型数。 4). 如果你在你的
表达式中用到 UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重
要。
25. 下面的代码输出是什么,为什么?void foo(void) { unsigned int a = 6; int b = -20;
(a+b > 6) puts("> 6") : puts("<= 6"); }这个问题测试你是否懂得 C 语言中的整数自动转换原则,
不管如何,这无符号整型问题的答案是输出是“>6”。原因是当表达式中存在有符号类型和
无符号类型时所有的操作数都自动转换为无符号类型。 因此-20 变成了一个非常大的正整
数,所以该表达式计算出的结果大于 6。这一点对于应当频繁用到无符号数据类型的嵌入
式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。
26 评 价 下 面 的 代 码 片 断 : unsigned int zero = 0; unsigned int compzero = 0xFFFF; /*1's
complement of zero */
答:对于一个 int 型不是 16 位的处理器为说,上面的代码是不正确的。应编写如下:
unsigned int compzero = ~0;
网络部分
1. 20 端口是_________
2.PING 是使用 TCP/IP 协议中的______协议
3.443 端口是_______服务使用的
4.标准端口的范围是___________
5.查看服务器当前正在连接 IP 列表命令是________6.IIS 服务的命令行方式重启命令是_
_________
7.在 FTP 命令当中查看本地文件列表命令是_______8.HTTP403 错误是________9.ASP
剩余13页未读,继续阅读
0IT_it0
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- IMG_20240425_120538.jpg
- My Complete Genome_6k Base-Pairs of Phenotype SNPs_Complete Raw Data.zip
- qt 的mqtt测试demo
- 移动应用开发教程-zip.zip
- mosquitto-2.018-install-windows-x64
- FTPServer FTP 服务器,绿色免安装,单文件
- 梦畅语音点名软件,上课点名
- 利用ADNI数据集和标签,在tensorflow框架上使用tensorlayer接口,通过架构u-net实现海马体的分割
- Kutools for Word v9.0 office word 插件
- 修复Windows 10 LTSC 2021资源占用率高
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0