C编程小事

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均为指针。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值