background image

    *num1 += *num2;

    return *num1;

}

int multiply1 ( int *num1 , int *num2 )

{

    *num1 = 2 * *num2;

    return *num1;

}

 

同样,这两个函数具有类似的功能。所不同的是在第一个函数( 1 for reading *num1 , 

2 for reading *num2 and 2 for writing to *num1)有 5 个内存的引用,而在第二个函数是只

有 2 个内存引用(one for reading *num2 and one for writing to *num1)。现在你认为哪一个

好些?

3、节约内存(内存对齐和填充的概念)

struct {

    char c;

    int i;

    short s;

}str_1;

struct {

    char c;

    short s;

    int i;

}str_2;

假设一个字符需要 1 个字节,short 占用 2 个字节和 int 需要 4 字节的内存。起初,我

们会认为上面定义的结构是相同的,因此占据相同数量的内存。然而,而 str_1 占用 12 个

字节,第二个结构只需要 8 个字节?这怎么可能呢?

请注意,在第一个结构,3 个不同的 4 个字节被分配到三种数据类型,而在第二个结

构的前 4 个自己 char 和 short 可以被采用,int 可以采纳在第二个的 4 个字节边界(一共 8

个字节)。