if( ‘a’<=str[i] && str[i]<=’z’ )
str[i] -= (‘a’-’A’ );
}
char str[] = “aBcDe”;
cout << “str字符长度为: ” << sizeof(str)/sizeof(str[0]) << endl;
UpperCase( str );
cout << str << endl;
答:函数内的sizeof有问题。根据语法,sizeof如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。函数外的str是一个静态定义的数组,因此其大小为
123,函数内的str实际只是一个指向字符串的指针,没有任何额外的与数组相关的信息,因此sizeof作用于上只将其当指针看,一个指针为4个字节,因此返回4。
一个32位的机器,该机器的指针是多少位
指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。
124.
main()
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf(“%d,%d”,*(a+1),*(ptr-1));
}
输出:2,5
*(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5
&a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)
int *ptr=(int *)(&a+1);
则ptr实际是&(a[5]),也就是a+5
原因如下:
&a是数组指针,其类型为 int (*)[5];
而指针加1要根据指针类型加上一定的值,
不同类型的指针+1之后增加的大小不同
a是长度为5的int数组指针,所以要加 5*sizeof(int)
所以ptr实际是a[5]
但是prt与(&a+1)类型是不一样的(这点很重要)
所以prt-1只会减去sizeof(int*)
a,&a的地址是一样的,但意思不一样,a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址,a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5].
125.请问以下代码有什么问题:
int main()
{
char a;
char *str=&a;
strcpy(str,”hello”);
printf(str);
return 0;
}
没有为str分配内存空间,将会发生异常
问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。
char* s=”AAA”;
printf(“%s”,s);
s[0]=’B’;
printf(“%s”,s);
有什么错?
“AAA”是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。
cosnt char* s=”AAA”;
然后又因为是常量,所以对是s[0]的赋值操作是不合法的。
126、关键字volatile有什么含意?并举出三个不同的例子?
提示编译器对象的值可能在编译器未监测到的情况下改变。
127、将树序列化 转存在数组或 链表中
128.下面哪个实体不是SIP协议定义的(A)。
A )MGC B)UA C)proxy D)Redirector
UA = User Agent 用户代理,指客户端的协议栈
PROXY = SIP Proxy ,指SIP服务器
Redirector = 重定向模块。一般用于跨服务器通讯
129.VOIP中本端与对端呼叫接通后,将通话转接到第三方称之为(C)。
A)呼叫转接 B)呼叫前转 C)呼叫转移 D)三方通话
跟普通电话相同,A,B都是没有接通前就把呼叫转接。D是指三方同时在通话。
130.VOIP的主要优点是(D)
A)价格便宜并且能为客户提供更好的增值服务。
B)语音质量比传统的PSTN电话好。
C)通话的安全性和可靠性有更高的保障。
D)不需要服务提供商就可以使用。
音质,可靠性是传统电话好。这题的问题在于,增值服务是指什么?如是SP则VOIP不支持。还是服务器提供商是指什么?VOIP需要服务器。
131.下面哪个技术不属于语音处理技术(D)
A)静音检测
B)分组丢失补偿
C)同声消除
D)网路穿越
D是网络传输的问题,主要是穿透NAT网关。特别是比较复杂的网络。
132.SIP协议是使用下面哪种方式编解码的()
A)ASN.1 B)BER C)ABNF D)PER
网络应用
133.在不同网络中MTU会发生变化,由于MTU的变化,会导致那些值也相应发生变化(A)
A)IP总长度字段
B)TCP MSS字段
C)UDP长度字段
D)TCP长度字段
待查,MTU变化会让IP分片或重组。因此变化就是IP
134.下列关于TCP和UDP的正确的说法是(C)
A)TCP实时性比UDP好
B)TCP比UDP效率高
C)TCP首部比UDP的首部长
D)TCP安全性比UDP高
实时性,效率。安全性,TCP不见得比UDP高
135.一个套接口应该匹配(D)
A)源目标IP
B)源目标IP端口
C)目标IP和目标端口
D)本地IP和本地端口
SOCKET相当一IP连接上用端口标识队列
136.TCP服务器出现异常并马上重启,通常会出现那些情况()
A)socket调用失败
B)bind调用失败
C)listen调用失败
D)select调用失败
此题有问题,一般软件很难自动重启。而TCP服务器可以在任何一个阶段出问题,上述哪一个都能出现,这个本意应该是指Select.
底层开发
137.在一台以字节为最小存储单位的机器上,如果把0×12345678写到从0×0000开始的地址上,下列关于big—endian和little—enddian说法正确的是(B)
A)在big—endian模式下,地址0×0000到0×0003存储的数据依次为:0×56,0×78,0×12,0×34
B)在big—endian模式下,地址0×0000到0×0003存储的数据依次为:0×12,0×34,0×56,0×78
C)在little—endian模式下,地址0×0000到0×0003存储的数据依次为:0×34,0×12,0×78,0×56
D)在little—endian模式下,地址0×0000到0×0003存储的数据依次为:0×56,0×78,0×12,0×34
138.以下关于交叉编译器概述正确的是(A)
A)交叉编译器一般按照CPU类型分类,不同的CPU就有不同的交叉编译器
B)交叉编译器的速度比其他编译器的速度要快
C)linux开发环境中的交叉编译器不是gcc编译器
D)交叉编译器编译出来的目标文件一般也能在开发机(普通PC)上运行
139.以下关于linux下中断的说法正确的是()
A)中断只能由硬件产生
B)中断服务例程不能运行参数传递
C)中断服务例程可以在函数结束的时候返回一个值
D)中断服务例程是不可中断的
D,B
140.以下关于linux下系统调用