1.字符串比较函数是strcmp( )。说法是否正确?
解析:正确
字符串比较函数strcmp(参数1,参数2),比较两个参数的ASC||码,若参数1>参数2,则返回正数,若小于则返回负数,相等则返回0
2.在 C 语言程序中变量必须定义后再使用。
解析:正确
3.在某个类A中存在一个方法:void set(int x),以下不能作为这个方法的重载的声明的是
- void set(int y)
- int set(int x,double y)
- double set(int x,int y)
- void set(int x,int y)
解析:
方法重载:方法名称相同,参数列表不同(可以是参数的类型,个数,顺序不同)
注意:如果两个方法只有返回值类型不同,编译器看还是同一个方法。
4.若言int a[10],*p=a;则以下表示中不能代表a[6]的是
- p[6]
- *(a+6)
- *(p+6)
- p+6
解析:
p+6返回的是a[6]的地址
5.有以下程序,程序运行后的输出结果是
void ss (char *s,char t)
{
while (*s)
{
if(*s==t) *s=t-‘a’+’A’;
s++;
}
}
void main()
{
char str1[100]="abcddfefdbd",c='d';
ss (str1,c); printf ("%s\n",str1);
}
解析:abcDDfefDbD
字符在内存中是以ASII码形式存储,
‘d’-‘a’+’A’作用就是将小写字符转换为大写
6.语言源程序的基本结构单位是 main 函数。请问这句话的说法是正确的吗?
解析:错误
C语言基本组成单位是函数,编译的基本单位是源程序
源程序可以有多个函数,只能有一个main函数,main函数由操作系统调用
int main()
{
char *p = "hello,world";
return 0;
}
p和"hello,world"存储在内存哪个区域?
解析:栈,只读存储区
(1)从静态存储区域分配:
内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为有系统会善后。例如全局变量,static变量等。
(2)在栈上分配:
在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
(3)从堆上分配:
即动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由程序员决定,使用非常灵活。如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,另外频繁地分配和释放不同大小的堆空间将会产生堆内碎块。
一个C、C++程序编译时内存分为5大存储区:堆区、栈区、全局区、文字常量区(只读存储区)、程序代码区。
8.有如下代码:
struct A1{
virtual ~A1(){}
};
struct A2{
virtual ~A2(){}
};
struct B1 : A1, A2{};
int main()
{
B1 d;
A1* pb1 = &d;
A2* pb2 = dynamic_cast<A2*>(pb1); //L1
A2* pb22 = static_cast<A2*>(pb1); //L2
return 0;
}
解析:
L1语句编译通过,L2语句编译失败
C的题目为什么这么多c++…
9.已知int占4个字节,bool占1个字节。
unsigned int
value = 1024;
bool condition =
*((bool *)(&value));
if (condition)
value += 1; condition = *((bool *)(&value));
if (condition)
value += 1; condition = *((bool *)(&value));
问value, condition 的值为____。
解析:1024,0
C的题目为什么这么多c++…
本文介绍了C/C++编程中的一些基础知识,包括字符串比较函数strcmp的使用,变量必须先定义后使用的规则,方法重载的概念,指针操作以及内存区域的划分。还讨论了字符数组的大小写转换,C语言程序的基本结构,以及动态类型转换在继承结构中的应用。同时,文章涉及了内存管理中栈、堆和静态存储区的区别,并通过实例展示了如何利用指针和位运算进行类型转换和条件判断。

1206

被折叠的 条评论
为什么被折叠?



