1.给出下列定义:
char acX[] = "abcdefg";
char acY[] ={'a', 'b', 'c', 'd', 'e', 'f', 'g'};
则正确的叙述是:数组acX的长度小于数组acY的长度。
2.下面代码输出的结果是:
#include
using namespace std;
void example(char acHello[])
{
printf("%d", sizeof(acHello));// 4
return;
}
int main(){
char acHello[] = "hello, 51_CC";
example(acHello);
return 0;
}
3.以下叙述中不正确的是(D)
(A)在不同的函数中可以使用相同名字的变量
(B)函数中的形式参数是在栈中保存
(C)在一个函数内定义的变量只在本函数范围内有效
(D)在一个函数内复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)
#include
using namespace std;
int main(){
int a = 10;
{
int b = 5;
cout<
4.下面代码输出的结果
#include
using namespace std;
int main(){
unsigned long pulArray[] = {6, 7, 8, 9,10};
unsigned long *pulPtr;
pulPtr = pulArray;
*(pulPtr + 3) += 3;
printf("%d, %d\n",*pulPtr, *(pulPtr + 3));// 6, 12
}
5.下面代码输出的结果
#include
#include
using namespace std;
void example()
{
int i;
//char acNew[20] = {0};//初始化都是‘\0’
char acNew[20];//随机的,没有初始化,所以不确定‘\0’会出现在哪里
for (int j = 0; j < 5; ++j) {
acNew[j] = '0';
}
printf("%d\n", strlen(acNew));// 15 值是随机值
}
int main(){
example();
}
6.全局变量可以定义在被多个.c文件包含的头文件中?(×)
解答:要使用那个变量(全局)就把哪个变量定义在要使用的源文件中,如果其他的文件也要引用的话,就在都包含的头文件中用extern定义即可。PS:在源文件中,用static定义的全局变量,只能在本文件中使用。
7.分析下面代码的输出
#include
using namespace std;
struct stu{
int num;
char name[10];
int age;
};
void fun(struct stu *p)
{
cout<<(*p).name<
8.设有下列语句的宏定义,z的值是多少:
#include
using namespace std;
#define N 4
#define Y(n) ((N+2)*n)
int main(){
int z = 2 *(N + Y(5 + 1));//70,直接把宏展开带入表达式,PS:展开之后运算的优先级可能会发生变化
cout<
9.以结构体作为函数的传递参数,一般都是以指针作为参数,减少函数参数压栈的系统开销。
10.下列代码的输出是
#include
using namespace std;
int main(){
unsigned char a = 200;
unsigned char b = 100;
unsigned char c = 0;
c = a + b;
//cout<
#include
using namespace std;
#define SIZE 256
int main(){
unsigned char i = 0;
//这是一个死循环
for(;i < SIZE;++i){
printf("i = %d\n", i);
}
return 0;
}
11.下面的代码pointer分配了()个字节的空间
#include
using namespace std;
#define A 2
#define B 3
#define MAX_SIZE A + B
struct _Record_Struct{
unsigned char Env_Alarm_ID : 4;
unsigned char Paral : 2;
unsigned char state;
unsigned char avail : 1;
}*Env_Alarm_Record;
int main(){
struct _Record_Struct *pointer = (struct _Record_Struct *)malloc(sizeof(_Record_Struct)* MAX_SIZE);//总共开辟9个字节的空间
return 0;
}
12.下面代码的输出是
#include
using namespace std;
int main(){
char c;
unsigned char uc;
unsigned short us;
c = 128;
uc = 128;
us = c + uc;
printf("0x%x\n",us);// 0x0
us = (unsigned char)c + uc;
printf("0x%x\n",us);// 0x100
us = c + (char)uc;
printf("0x%x\n",us);// 0xff00
return 0;
}
PS:负数在内存中是用补码来存的,输出的时候要转化为原码,转换过程:先-1,再取反(取反符号位不变)
#include
using namespace std;
int main(){
char a = -128;// 0x80
char b = -127;// 0x81
char c = -1; // 0xff
char d = -2; // 0xfe
char f = 0; // 0x00
}
13.下列代码的输出是
#include
using namespace std;
unsigned short *sum(unsigned char a , unsigned char b)
{
unsigned short s = 0;
s = a + b;
return &s;
}
int main(){
unsigned short *p = nullptr;
unsigned char a = 1, b=2;
p = sum(a, b);
printf("%u + %u = %u\n",a,b,*p);
return 0;
}
gcc返回了一个调用函数里面的临时值,崩掉了。vc结果是3,不同的系统处理的方式不同。