C语言

原创 2007年09月12日 15:44:00

函数指针:
定义:typedef void (F1)(int p1, int p2)
    typedef void (*F2)(int p1, int p2)
    test (int p1, int p2);

    F1 * fp1;
    F2   fp2;
    F1   fp3;
问: 语句
fp3 = test;
fp2 = test;
fp1 = test
是否成立?
答案:第一条语句有错,其余两天语句正确。

指针运算:
int *p1, *p2;
int value;

p1 = (int *)0x500;
p2 = (int *) 0x508;
value = p2-p1;
问:value的值?

答案:2

定义union,并说明如何使用。如何在union中进行位域的定义?

枚举类型:
enum type1 {
     A,
     B
     };
enum type2 {
     C =1,
     D,
     E,
     F
     }
    问:A,B,D,E,F 的值分别是多少?
答案:0,1,2,3,4
宏定义函数与普通函数调用的区别?

宏定义中若有多行,如何连接
答案:用反斜杠’/’
#define fn_max(x,y)    /
do {       /
   .....      /
   .....      /
   }while(0)

int main()
{
   fn_max(x,y);
}
问:为什么要用do……while(0)把宏定义的多条语句括起来?
答案:便于优化

struct struct_A{
int a;
char b;
int c;
short d;
}
    struct struct_B{
   int a;
   char b;
   short c;
   int d;
   }
struct_A a;
struct _B b;
问:sizeof(struct_A a) = ?
sizeof(struct_A b) = ?
答案:sizeof(a) 为16,sizeof(struct_A b)为12

9. #include
main()
{
char **p;
char *m[] = {“Welcome /n”,
      “to /n”,
      “join /n”,
      “us! /n”
      };
   p = m;
   printf(“%s/n”,*p++);
   printf(“%c/n”,**p);
}
问:写出程序的执行结果
答案:“Welcome”和“t”

10. static局部变量和static全局变量的区别
答案:主要是作用域的不同,static局部变量只在函数内部或者程序块内有效,而static全局变量在整个C文件模块中都有效,注意它在其它C文件中无效。

11. 指向常量的指针和常指针的区别
答案:指向常量的指针所指向的内容不能被修改但能够指向其它的量,而常指针是指向的内容可以被修改但指针不能再指向其它地方。

12. if (a=b)
printf(“a==b”)
else
printf(“a!=b”);
输出结果为:
A.a==b    B.a!=b    C.不一定    D.不能运行
答案:不一定,这要根据b的内容来决定。通常再编程时不要使用此类的赋值语句。

13.在内联函数中使用static变量,比如
inline test()
{ static couter = 0;
   counter++;
}
会有什么问题?
答案:会造成多次定义该变量,因此再内联函数中禁止定义静态变量

14. F是一个结构类型,有如下定义:
F f1,f2;
问:f1=f2;语句是否成立?
答案:该语句成立,不过有的编译器不支持。实际上编译器也是用内存拷贝函数来实现的。

15.全局变量、局部变量、模块变量在内存空间中如何存放?(数据区or栈空间?)
答案:全局变量在全局空间分配,局部变量在栈空间分配,模块变量在全局空间分配。

16.struct A{
......
......
union {
   int x;
   .....
   };
}
struct A a;
问:a.x这样的表示法是否成立?
答案:成立

如果结构定义改为如下定义
.struct A{
......
int x;
union {
   int x;
   .....
   };
}
那a.x表示法是否成立?
答案:不成立,编译时会报x变量重定义

17. #define REDEF(name,arg1,arg...) /
       _##name (arg1,##arg)
问:以下两个语句宏展开的结果
REDEF(test_fn1,int a,int b);
REDEF(test_fn2,int a);
答案:
_test_fn1(int a ,int b)
_test_fn2(int a);
注意:在VC中不支持,gcc才支持该参数宏函数。

18. fnxxxx_max(char str[])
{
    putchar str[0];
    str++; //(1)
    printf(“%s”,str);
}
    main()
    {
      char str[20]={“ABCDEFG”};
      fnxxxx_max(str);
      str++; //(2)
      printf(“%s”,str);
}
问:语句(1)和语句(2)是否成立?
答案:语句(1)成立,语句(2)不成立
19.#define SRR 0x001;
    #define SRT 0x002;
    #define SRI 0x0900;

EVENT = SRR|SRT|SRI
问:上面的语句有什么问题?EVENT的值会是多少?
答案:宏展开后变为:
EVENT =   0x001; 0x002;0x0900;
因此EVENT的值为0x001,所以在编程时一定要小心,一定不要在常量宏定义的后面加上分号 

C语言for循环

c语言中的for循环语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句. for(表达式 1;表达式 2;表达式...
  • YanandYue
  • YanandYue
  • 2015年10月14日 20:19
  • 8567

学习笔记1—C语言的基本语法

1 C语言的程序构成方式   1)c语言程序由函数构成,每个函数可以实现一个或多个功能。 2)一个正规程序可以有多个函数,但是有且只有一个主函数。 3)函数只有在被调用的时候才执行,主函数由系统调用执...
  • ww231147
  • ww231147
  • 2015年11月14日 18:11
  • 3066

C语言中& | ^ ~ >> <<头疼的符号(不用+、-、×、÷做加法)

一直头疼的符号,现在不头疼了。 我们都知道,数据在计算机里是以二进制形式表示的。在实际问题中,常常 也有一些数据对象的情况比较简单,只需要一个或几个二进制位就能够编码表示。如果在一个软件系统中这种数据...
  • caojunhao123
  • caojunhao123
  • 2013年09月28日 12:13
  • 3606

【黑马程序员】---C语言经典编程实例分析

C语言经典编程实例 题目01:提示用户输入一个正整数n,利用while循环计算并输出:1-2+3-4+5-6+7…+n的和. int main() { // 1.定义变量存储用户输入的整数...
  • u010001701
  • u010001701
  • 2015年03月08日 22:43
  • 2879

C语言之各种运算符

异或的符号是⊕。按位异或运算, 对等长二进制模式按位或二进制数的每一位执行逻辑按位异或操作. 操作的结果是如果某位不同则该位为1, 否则该位为0. xor运算的逆运算是它本身,也就是说两次异或同一个...
  • xlhcgd
  • xlhcgd
  • 2015年03月28日 15:35
  • 816

C语言中的++a和a++的区别

自增自减 1、++自增运算符:如a++,++a都等价于a = a + 1; 2、--自减运算符:如a--,--a都等价于 a = a -1;...
  • lovexiaonvren
  • lovexiaonvren
  • 2014年07月07日 10:06
  • 7387

贪吃蛇C语言实现(简易版)

一 引言 刚学习完C语言,寒假就迫不及待的学习这个贪吃蛇小程序。不得不说,写完还是大有收获的。 二 基本原理 对于贪吃蛇怎么在屏幕上移动,当初自己也是懵逼,哈哈。其实就是不断刷新屏幕...
  • qq_37074040
  • qq_37074040
  • 2017年01月28日 11:09
  • 12992

C语言中的复数

C语言中的复数操作   复数在数学运算中十分重要,在编写数值运算或者算法的时候,我们会用到复数这种概念。 那么,复数在C/C++语言中是如何表示的呢?我们接下来一一介绍。 C语言中复数    在数学中...
  • duandianR
  • duandianR
  • 2017年04月27日 11:10
  • 3163

C语言编程入门——if的用法

顺序,选择和循环是程序的三大基本结构,无论多么复杂的程序,都是用这三种结构写出来的。 if的用法(示例1) # include int main(void) { if (true) if (...
  • LFhappypain
  • LFhappypain
  • 2015年07月31日 14:50
  • 3638

C语言基础知识

学习博客上的各种杂知识 兜兜转载
  • u012605629
  • u012605629
  • 2014年08月11日 20:35
  • 5385
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言
举报原因:
原因补充:

(最多只允许输入30个字)