1 字符串的连接
C++:
cout << "hello ni hao/
nihaoama?" << endl;
这种输出结果为: hello ni hao nihaoama? 两个字符串之间会出现一个空格。要想不出现空格必须第二行处于行头
C:
printf("helooolasdfasdfafdasf/n
asfdasfassasdaf");
这个效果和上面一样,但是这是一种旧式的写法。
最新的写法为:
printf("hello nihaoma"
"aisinihaaaahehen..adsfa"
"hello");
这种写法的输出结果不会输出空格。
2 union结构体
union的用法和struct的基本相同,但是编译器对于他的解释方式不同,如结构体struct所分配的内存为其所有变量所占的内存和+填充字节。而union所占的内存为它的联合体中最大变量所占的内存空间。它的所有变量共享这一段内存空间。我们每次只能使用其中一个变量,否则他们的值将会相互覆盖。如;
c的输出结果为4
b.a = 3;
b.d = 3;
为什么会是这样的结果呢?b.a的值不是明明是10吗?这就是我上面所说的原因了,由于他们共享同一段内存空间,所以a的值被d覆盖了。
那如果union里含有一个结构体struct又会怎样呢?
如:
输出结果为:4
这是为什么呢?
哈哈,很简单的啦,虽然我们的union里面包含了一个struct,但是它并没有定义变量,故根本不占内存空间啦。。我们再看这个:
输出结果:
sizeof t = 8
t.a = 3;
t.m.b = 3;
t.m.c = 4;
结果有啦。呵呵。。就是这样的。。
3 有关typedef
typedef 可以帮我们定义一个类型的别名.在这里举一些经典的例子:
typedef int x[10]; //现在x就是一个含有十个元素的数组类型。我们就可以使用它了。
typedef int (*p)(void);//p为一个指向参数为空,返回类型为int的函数指针类型.
举这两个例子吧,我想大家肯定都能明白了。。呵呵。
4 #define 和 typedef容易混淆的地方。
#define pINT int;
typedef int pINT ;
pInt a,b;//没问题。
#define ptrINT int*;
ptrINT a,b;
貌似是定义了两个int型指针。但实际上a为指针,b为int型变量。
typedef int* ptrINT;
ptrINT a,b;
没问题,a,b均为指针。