如和是一段代码第一次执行时的行为与以后的执行时不同。
#include <iostream>
//------------------------------------------------
void generate_initializer(char * string)
{
static char separator = ' ';
printf("%c %s \n", separator, string);
separator = ',';
}
void main()
{
char string[5] = "aaaa";
generate_initializer(string);
generate_initializer(string);
}
函数第一遍执行结果前面会是空格,而第二次执行结果将是逗号,很好的降低代码的可读性!
到底有几个乘号?
#include <iostream>
#include <stdlib.h>
#define N 1
//------------------------------------------------
//-----------------------------------------------
void main()
{
int *r,p,*q;
p = N * sizeof *q;//这里面有几个和乘号
printf("p = %d\n", p);
r = (int *)malloc(p);
printf("r = %d\n", r);
//----------------------------------------
p = sizeof(int)* p;//那这里面有几个乘号呢?
printf("p = %d\n", p);
r = (int *)malloc(p);
printf("r = %d\n", r);
getchar();
}
第一个答案这里只有一个乘号因为sizeof操作符将指针q指向的东西(即 *q)作为操作数。它返回的q所指向对象类型的字节数。
第一个结果就是4。
第二个答案这里是一个乘号 ,结果是16.sizeof(int)返回4~4*4=16
嗯很好降低了程序的可读性~