C高级编程练习题
1C++语言基础及过程化程序设计
1.1基础概念
1.函数声明和函数定义有什么区别?
答:1) 函数声明是函数的原型,强调函数如何被使用,不包含函数的实现代码;
2) 函数定义给出函数的实现代码。
2.const char *p1; char * const p2;的区别
答:1) const位于星号的左侧,const用来修饰指针所指向的变量,即指针指向为常量;2)const位于星号的右侧,const用来修饰指针本身,即指针本身是常量。
3.delete与delete []区别
答:delete只会调用一次析构函数,而delete[]会调用动态分配的多个对象的析构函数
4.解释堆和栈的区别
答:1) 栈:由编译器自动分配释放,存放函数的参数、局部变量等。通常在超出作用域后由系统自动释放。2) 堆:一般由程序员负责分配与释放,若程序员不释放,占用的内存直到程序结束才由OS回收。
5.在什么时候需要使用“常引用”?
答:如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。
6.全局变量和局部变量在内存中的区别。
答:1) 全局变量储存在静态数据区,程序加载时分配并初始化,程序结束时释放;2) 局部变量在栈中,进入变量作用域后分配,超出其作用域后释放;
3) 全局变量不初始化会执行缺省初始化,如整型变量缺省初始化为0,局部
变量不初始化不会执行缺省初始化,往往为垃圾值。
7.简述内存的分配方式。
答:1) 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。2) 栈上分配,函数内的局部变量和形参在栈上分配。
3) 堆上分配,动态分配,用new分配内存,用delete来释放内存。
8.指针的几种典型应用情况。
int *p[n];-----指针数组,每个元素均为指向整型数据的指针。
int (*p) [n];------指向一维数组的指针,这个一维数组含有n个整型数据。
int *p();----------返回指向整型指针的函数。
int (*p) ();------指向函数的指针,要求函数无参并返回整型。
9.说明0、’\0’、’0’、“0”的区别
答:0表示整数常量,值为0;’\0’表示ASCII码值为0的字符常量;’0’表示ASCII 码值为48的
字符常量;“0”为字符串常量,其中包含’0’和’\0’两个字符。
10.说明下面程序中存在的问题
#include
int main()
{
int arr[10], *p=arr;
int i;
for( ; p<arr+10;++p)< p="">
cin>>*p;
for(; a<p;++arr)< p="">
cout<<*arr<<‘0’;
return 0;
}
答:arr为数组名,对应地址不可修改,不能应用++arr运算。
11.有如下定义,请写出访问a[2][3]元素的不同方法
int a[4][5];
int (*p)[5] = a;
答:a[2][3]、p[2][3]、*(a[2]+3)、*(p[2]+3)、*(*(a+2)+3)、*(*(p+2)+3) 1.1阅读程序
1.写出下面程序的运行结果。
#include
using namespace std;
int main()
{
double numOne = 2.5;
编程语言有哪几种类int numTwo = 3;
double quotient = numOne/2;
cout<<"Quotient: "<<quotient<<endl;< p="">
quotient = numTwo/2;
cout<<"Quotient: "<<quotient<<endl;< p="">
return 0;
}
2.写出下面程序的运行结果。
#include
using namespace std;
{
int number = 103;
int digit, tens, hundreds;
digit = number %10;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论