C语言基础知识(15)

这篇博客介绍了C语言的基础知识,包括如何通过指针访问数组,call by value和call by reference的区别,头文件中的ifndef/define/endif的用途及其与program once的区别。此外,还讨论了无限循环的概念,如何定义字符串变量,构造函数和析构函数是否可以抛出异常,以及在C语言中如何不使用分号打印"hello world"。最后,解释了void函数的使用场景和类的继承概念,并展示了不使用第三个变量交换两个数字的方法。

在C语言中可以用指针访问数组吗

当然可以。通过将数组的基地址保存为一个指针,可以使用指针访问数组

Call by value和call by reference有什么区别

call by value传的是值。Call by reference传的是地址

头文件中的 ifndef/define/endif 是干什么用的? 该用法和 program once 的区别

相同点:它们的作用是防止头文件被重复包含。

不同点ifndef 由语言本身提供支持,但是 program once 一般由编译器提供支持,也就是说,有可能出现编译器不支持的情况(主要是比较老的编译器)。通常运行速度上 ifndef 一般慢于 program once,特别是在大型项目上, 区别会比较明显,所以越来越多的编译器开始支持 program once。ifndef 作用于某一段被包含(define 和 endif 之间)的代码, 而 program once 则是针对包含该语句的文件, 这也是为什么 program once 速度更快的原因。如果用 ifndef 包含某一段宏定义,当这个宏名字出现“撞车”时,可能会出现这个宏在程序中提示宏未定义的情况(在编写大型程序时特性需要注意,因为有很多程序员在同时写代码)。相反由于program once 针对整个文件, 因此它不存在宏名字“撞车”的情况, 但是如果某个头文件被多次拷贝,program once 无法保证不被多次包含,因为program once 是从物理上判断是不是同一个头文件,而不是从内容上。

什么是无限循环

一个连续运行了无限次的循环被称为无限循环

如何在c语言中定义一个字符串变量

使用char定义一个字符数组

构造函数析构函数可否抛出异常

C++只会析构已经完成的对象,对象只有在其构造函数执行完毕才算是完全构造妥当。在构造函数中发生异常,控制权转出构造函数之外。因此,在对象b的构造函数中发生异常,对象b的析构函数不会被调用。因此会造成内存泄漏。

用auto_ptr对象来取代指针类成员,便对构造函数做了强化,免除了抛出异常时发生资源泄漏的危机,不再需要在析构函数中手动释放资源;

如果控制权基于异常的因素离开析构函数,而此时正有另一个异常处于作用状态,C++会调用terminate函数让程序结束;

如果异常从析构函数抛出,而且没有在当地进行捕捉,那个析构函数便是执行不全的。如果析构函数执行不全,就是没有完成他应该执行的每一件事情。

请写一个不使用分号的程序来打印 "hello world"

#include<stdio.h>voidmain(){if(printf("hello world")){}// It prints the ?hello world? on the screen. }

在函数定义的时候何时用void

当函数没有返回值时,可以用void

什么是类的继承

类与类之间的关系;has-A包含关系,用以描述一个类由多个部件类构成,实现has-A关系用类的成员属性表示,即一个类的成员属性是另一个已经定义好的类;use-A,一个类使用另一个类,通过类之间的成员函数相互联系,定义友元或者通过传递参数的方式来实现;is-A,继承关系,关系具有传递性;

写一个不使用第三个变量程序来交换两个数字

#include<stdio.h>#include<conio.h>main(){int a=10, b=20;//declaration of variables. clrscr();//It clears the screen. printf("Before swap a=%d b=%d",a,b);

a=a+b;//a=30 (10+20)

b=a-b;//b=10 (30-20)

a=a-b;//a=20 (30-10) printf("After swap a=%d b=%d",a,b);getch();}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoyi9812

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值