C 语言试题 一:单项选择题 1. void Example(char acHello[]) { printf("%d", sizeof(acHello)); return; } void main() { char acHello[] = "hello"; Example(acHello); return; } 的输出是( ) A 4 B 5 C 6 D 不确定 2.网络上传输的字节序默认是大字节的,如果主机是小字节序,在网络通信时则须进行字节序转换;如果主机是大字节序,为了程序的一致性及可移植性,最好也在程序中加上字节序转换的操作(空操作)。( ) A. 正确 B.错误 3. int *(*ptr)(); 则以下叙述中正确的是( ) A) ptr 是指向一维组数的指针变量 B) ptr 是指向int 型数据的指针变量 C) ptr 是指向函数的指针,该函数返回一个int 型数据 D) ptr 是指向函数的指针,该函数的返回值是指向int 型数据的指针 4.此函数实现把32 位IP 地址(网络序)以字符串的方式打印出来: char *IpAddr2Str(unsigned long ulIpAddr) { char szIpAddr[32]; unsigned long ulLocIpAddr = ntohl(ulIpAddr);//把网络序转话为主机序 (void)VOS_sprintf(szIpAddr, "%d.%d.%d.%d", ulLocIpAddr >> 24, (ulLocIpAddr >> 16) & 0xff, (ulLocIpAddr >> 8) & 0xff, ulLocIpAddr & 0xff); return szIpAddr; } 下面描述正确的是(): A、数组szIpAddr 空间不够; B、函数返回局部数组szIpAddr 变量地址; C、输出的IP 地址次序颠倒; 5. #define OK 0 #define ERR 1 #define ERROR (-1) #define BUFFER_SIZE 256 char *GetMemory(unsigned long ulSize) { char *pcBuf = NULL; pcBuf = (char *)malloc(ulSize); if(NULL == pcBuf) { return ERROR; } return pcBuf; } void Test(void) { char *pszBuf = NULL; pszBuf = GetMemory(BUFFER_SIZE); if(NULL != pszBuf) { strcpy(pszBuf, "Hello World!\r\n"); printf(pszBuf); free(pszBuf); } return; } 如下描述正确的是: A、pszBuf 指向的内存不能超过 255 B、GetMemory 函数的异常分支返回了-1,是一个非法地址 C、GetMemory 中异常分支没有释放空间; D、pcBuf 为局部指针,指向的内存将在 GetMemory 被调用后释放 6、#include "stdio.h" unsigned short *Sum(unsigned char a, unsigned char b) { unsigned short s = 0; s = a + b; return &s; } int main...