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

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



