1.3.1
static int j; void fun1(void) { static int i = 0; i ++; } void fun2(void) { j = 0; j++; } intmain() { for(k=0; k<10; k++) { fun1(); fun2(); } return 0; }
Q:求i 和 j的值
1.4
int main() { char a[1000]; int i; for(i=0; i<1000; i++) { a[i] = -1-i; } printf("%d",strlen(a)); //Q: 输出多少 return 0; }
1),按照我们上面的解释,那-0 和+0 在内存里面分别怎么存储?
2),int i = -20;
unsigned j = 10;
i+j 的值为多少?为什么?
3), 下面的代码有什么问题?
unsigned i ; for (i=9;i>=0;i--) { printf("%u\n",i); }
1.5.2
sizeof(int)*p 表示什么意思?
留几个问题(讲解指针与数组时会详细讲解),32 位系统下:
int *p = NULL;
sizeof(p)的值是多少?
sizeof(*p)呢?
int a[100];
sizeof (a) 的值是多少?
sizeof(a[100])呢?//请尤其注意本例。
sizeof(&a)呢?
sizeof(&a[0])呢?
int b[100];
void fun(int b[100])
{
sizeof(b);// sizeof (b) 的值是多少?
}
1.8.1
留一个问题:在switch case 语句中能否使用continue 关键字?为什么?
1.11.1
注意:const 修饰的只读变量必须在定义的同时初始化,想想为什么?
留一个问题:case 语句后面是否可以是const 修饰的只读变量呢?
1.12
留一个问题:const volatile int i=10;这行代码有没有问题?如果没有,那i 到底是什么属性?
1.14.1
struct student
{
}stu;
sizeof(stu)的值是多少呢?
1.15.1
union
{
int i;
char a[2];
}*p, u;
p =&u;
p->a[0] = 0x39;
p->a[1] = 0x38;
p.i 的值应该为多少呢?
1.15.2
//在x86 系统下,输出的值为多少? #include <stdio.h> intmain() { int a[5]={1,2,3,4,5}; int *ptr1=(int *)(&a+1); int *ptr2=(int *)((int)a+1); printf("%x,%x",ptr1[-1],*ptr2); return 0; }
1.16.2
留两个问题:
A),枚举能做到事,#define 宏能不能都做到?如果能,那为什么还需要枚举?
B),sizeof(ColorVal)的值为多少?为什么?
1.17.4
留两个问题:
1),#define a int[10]
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;
2), typedef int a[10];
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;
3),#define a int*[10]
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;
4), typedef int * a[10];
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;
5),#define *a int[10]
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;
6), typedef int (* a)[10];
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;
7),#define *a * int[10]
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;
8), typedef int * (* a)[10];
A),a[10] a[10];
B),a[10] a;
C),int a[10];
D),int a;
E),a b[10];
F),a b;
G),a* b[10];
H),a* b;
请判断这里面哪些定义正确,哪些定义不正确。另外,int[10]和a[10]到底该怎么用?