1、代码改错——函数指针的使用
#include <stdio.h>
int max(int x, int y)
{
return (x > y ? x : y);
}
int main()
{
int *p; //int (*p)(int ,int)定义指针类型错误
int a, b, c;
int result;
int max(x, y); //声明错误 int max (int x,int y)
p = max; //p=&max 取函数的地址
printf("Please input three integer");
scanf("%d%d%d", &a, &b, &c);
result = (*p)((*p)(a, b), c);
printf("result = %d\n", result);
return 0;
}
2、看代码写输出——函数指针的使用
#include <stdio.h>
int add1(int a1, int b1)
{
return a1+b1;
}
int add2(int a2, int b2)
{
return a2+b2;
}
int main()
{
int numa1 = 1, numb1 = 2;
int numa2 = 2, numb2 = 3;
int (*op[2])(int a, int b);
op[0] = add1;
op[1] = add2;
printf("%d %d\n", op[0](numa1, numb1), op[1](numa2, numb2));
getchar();
return 0;
}
结果为 3,5
3、看代码写结果——位运算
#include <stdio.h>
int main()
{
unsigned short int i = 0;
unsigned char ii = 255;
int j = 8, p, q;
p = j << 1;
q = j >> 1;
i = i - 1;
ii = ii + 1;
printf("i = %d\n", i);
printf("ii = %d\n", ii);
printf("p = %d\n", p);
printf("q = %d\n", q);
return 0;
}
unsigned short int=0 范围0~65535 i=i-1 i=65535
unsigned char ii=255 范围0~255 ii=ii+1 ii=0
00001000 00010000 p=16
00001000 00000100 q=4
4、写出下面代码的效果
#include <stdio.h>
int main()
{
int a = 3, b = 5; //0011 0101
printf("a = %d\tb = %d\n", a, b);
a ^= b;//a=a^b 0011 0101 = 0110
b ^= a; //b=b^a 0101 0110 = 0011
a ^= b; //a=a^b 0110 0011 = 0101
printf("a = %d\tb = %d\n", a, b); //a=0101=5,b=0011=3
return 0;
}
结果
a=3,b=5;
a=5,b=3。
通过异或运算来实现交换数值大小
5、32位系统,给定结构体,问 sizeof(A) = ( B )
struct A
{
char t:4;
char k:4;//t+k=1字节
unsigned short i:8;//2字节
unsigned long m;//4字节
}
A、7 B、8 C、9 D、10
#include <stdio.h>
int max(int x, int y)
{
return (x > y ? x : y);
}
int main()
{
int *p; //int (*p)(int ,int)定义指针类型错误
int a, b, c;
int result;
int max(x, y); //声明错误 int max (int x,int y)
p = max; //p=&max 取函数的地址
printf("Please input three integer");
scanf("%d%d%d", &a, &b, &c);
result = (*p)((*p)(a, b), c);
printf("result = %d\n", result);
return 0;
}
2、看代码写输出——函数指针的使用
#include <stdio.h>
int add1(int a1, int b1)
{
return a1+b1;
}
int add2(int a2, int b2)
{
return a2+b2;
}
int main()
{
int numa1 = 1, numb1 = 2;
int numa2 = 2, numb2 = 3;
int (*op[2])(int a, int b);
op[0] = add1;
op[1] = add2;
printf("%d %d\n", op[0](numa1, numb1), op[1](numa2, numb2));
getchar();
return 0;
}
结果为 3,5
3、看代码写结果——位运算
#include <stdio.h>
int main()
{
unsigned short int i = 0;
unsigned char ii = 255;
int j = 8, p, q;
p = j << 1;
q = j >> 1;
i = i - 1;
ii = ii + 1;
printf("i = %d\n", i);
printf("ii = %d\n", ii);
printf("p = %d\n", p);
printf("q = %d\n", q);
return 0;
}
unsigned short int=0 范围0~65535 i=i-1 i=65535
unsigned char ii=255 范围0~255 ii=ii+1 ii=0
00001000 00010000 p=16
00001000 00000100 q=4
4、写出下面代码的效果
#include <stdio.h>
int main()
{
int a = 3, b = 5; //0011 0101
printf("a = %d\tb = %d\n", a, b);
a ^= b;//a=a^b 0011 0101 = 0110
b ^= a; //b=b^a 0101 0110 = 0011
a ^= b; //a=a^b 0110 0011 = 0101
printf("a = %d\tb = %d\n", a, b); //a=0101=5,b=0011=3
return 0;
}
结果
a=3,b=5;
a=5,b=3。
通过异或运算来实现交换数值大小
5、32位系统,给定结构体,问 sizeof(A) = ( B )
struct A
{
char t:4;
char k:4;//t+k=1字节
unsigned short i:8;//2字节
unsigned long m;//4字节
}
A、7 B、8 C、9 D、10