C语言刷题笔记 day009 2021.8.29

本文介绍了C/C++编程中的一些基础知识,包括字符串比较函数strcmp的使用,变量必须先定义后使用的规则,方法重载的概念,指针操作以及内存区域的划分。还讨论了字符数组的大小写转换,C语言程序的基本结构,以及动态类型转换在继承结构中的应用。同时,文章涉及了内存管理中栈、堆和静态存储区的区别,并通过实例展示了如何利用指针和位运算进行类型转换和条件判断。

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++…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值