class obj
{
public:
obj(int t) :i(t)
{}
obj()
{
obj(19);
}
int i;
};
int main()
{
obj a;
cout << a.i << endl;
system("pause");
return 0;
}
以上并不输出19,由于在默认构造函数中调用带参数构造函数,并不会执行被调构造函数的具体内容。
指针有两个属性:指向变量/对象的
地址
和
长度
但是指针只存储地址,长度则取决于指针的类型
编译器根据指针的类型从指针指向的地址向后寻址
指针类型不同则寻址范围也不同,比如:
int*从指定地址向后寻找4字节作为变量的存储单元
double*从指定地址向后寻找8字节作为变量的存储单元
1.void指针是一种特别的指针
void *vp
//说它特别是因为它没有类型
//或者说这个类型不能判断出指向对象的长度
2.任何指针都可以赋值给void指针
type *p;
vp=p;
//不需转换
//只获得变量/对象地址而不获得大小
3.void指针赋值给其他类型的指针时都要进行转换
type *p=(type*)vp;
//转换类型也就是获得指向变量/对象大小
转:http://icoding.spaces.live.com/blog/cns!209684E38D520BA6!130.entry
4.void指针不能复引用
*vp//错误
因为void指针只知道,指向变量/对象的起始地址
而不知道指向变量/对象的大小(占几个字节)所以无法正确引用
5.void指针不能参与指针运算,除非进行转换
(type*)vp++;
//vp==vp+sizeof(type)
这样意味着void*数组可以存储多种不同的类型的常规类型,甚至是自定义类型
C语言中可以使用#define来构造泛型数组和堆栈等容器。
#define GeneralArray(ArrayType,ArrayName,ArraySize) ArrayType ArrayName[ArraySize];
class obj{public:obj(int t) :i(t){}obj(){obj(19);}int i;};int main(){obj a;cout system("pause");return 0;}以上并不输出19,由于在默认构造函数中调用带参数构造函数,并不会执行被调构造函数的具体内容。
Definition:
The #
define
Directive
You can use the #
define
directive to give a meaningful name to a constant in your program. The two forms of the syntax are:
Syntax
#
define
identifier token-stringopt
#
define
identifier[( identifieropt, … , identifieropt )]
#
define
是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对C语言的学习很不利。
1 #
define
命令剖析
1.1 #
define
的概念
#
define
命令是C语言
文章目录前言隐式转换C语言中的隐式转换
类
类
型转换显示转换
在深入理解C语言中的
类
型转换一文中对C语言中出现的隐式转换和显示转换进行了总结,在那篇文章中所提到的所有
类
型转换都适用于C++语言,本文将特别关注C++语言中的
类
型转换,主要概括出C++不同于C语言的知识点。
C语言中的隐式转换
主要参考前言中提到的那篇文章,在此不再重复叙述。
类
类
型转换
作为一门面向对象的编程语言,C++在C语言基础上从程序语言层次上支持了
类
及其一系列相关特性,例如继承、虚函数、多态等。在
/* 因为a(x) 就是 x;x;x; 宏定义只是替换
* a(字) 字;字;字;
* 所以a(printf("w"));就是printf("w");printf("w");printf("w");
* 结果:www
优化这段代码:def RHS(psi_hat, t): psi = ifftn(psi_hat) # inverse FFT to original function V = 0.5 * (x[0]**2 + (r2 * x[1])**2 + (r3 * x[2])**2) #
define
V(x) V_hat = fftn(V * psi) # Calculate FFT of V(x) psi3_hat = fftn(np.abs(psi)**2 * psi) return -(0.5j)* (k_squared * psi_hat + 2 * V_hat + psi3_hat/10)