9.变量的声明和定义有什么区别?
10.请写出下面代码在 32 位平台上的运行结果,并说明 sizeof 的性质:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char a[30];
char *b = (char *)malloc(20 * sizeof(char));
printf(“%dn”, sizeof(a));
printf(“%dn”, sizeof(b));
printf(“%dn”, sizeof(a[3]));
printf(“%dn”, sizeof(b+3));
printf(“%dn”, sizeof(*(b+4)));
return 0 ;
}
12.请完成以下题目。注意,请勿直接调用 ANSI C 函数库中的函数实现。
a)请编写一个 C 函数,该函数给出一个字节中被置 1 的位的个数,并请给出该题的至少一个不同解法。
第一种unsigned int TestAsOne0(char log)
{
int i;
unsigned int num=0, val;
for(i=0; i<8; i++)
{
val = log >> i; //移位
val &= 0x01; //与1相与
if(val)
num++;
}
return num;
}
第二种unsigned int TestAsOne1(char log)
{
int i;
unsigned int num=0, val;
for(i=0; i<8; i++)
{
val = (~log) >> i; //反码?
val &= 0x00; //与0相与
if(!val)
num++;
}
return num;
}
b)请编写一个 C 函数,该函数将给定的一个字符串转换成整数。
int Invert(char *str)
{
int num=0;
while(*str!=’