powerwind 发表于 2006-6-30 20:42

你的C语言入门了吗?

学习编程最忌浮躁,我也浮躁过了。

大一开始学C语言,老师只教没到指针的地方就结束了。然后自学结构体、指针等,感觉要学都学了,不知道该学什么。后来呢,两年后还觉得自己没有入门。

那C语言究竟要学多少才算入门呢?不同的人有不同的理解,我的理解是这样的(个人意见,仅供参考)。

一,掌握基本的数据类型、基本控制流和文件读写
起码要知道一般不这样写:char str="Hello";而这样写:char str="Hello";掌握 for,while,switch等。
会读写文本文件和二进制文件。

二,熟悉,使用它们:
constvolatilesizeoftypedefmallocfree#pragma#ifndef
这些字眼是不是很熟悉?没有不认识的吧?!
举个sizeof的例子,你觉得输出结果会怎样?先想想,然后编译运行验证下。

struct A{char ch;int i; float f; double d; char *c; }a;

struct B{char ch;char *c; int i; float f;double d; }b;

void test()
{
   printf("sizeof(a)=%d\n",sizeof(a));
   printf("sizeof(b)=%d\n",sizeof(b));
}


三,掌握一维和二维数组

一维数组比较简单,容易掌握。二维稍有难度,重点掌握。三维以上太有难度了。
看看个例子,理解了吗?

void test()
{
   int a[]={1,2,3,4,5,6,7,8};
   int *p1;
   if((int)&a==(int)&a)
      printf("&a==&a=%ld\n",(int)&a);
   p1=(int*)(&a+1);
   printf("%d\n",*(p1-1));
   p1=(int*)(&a+1);
   printf("%d\n",*(p1-1));
}


四,掌握指针数组和数组指针

指针数组较常用,易理解,数组指针就较有难度。如果是指向二维数组的指针就更难了。


void test()
{
   char a={"123"};
   char*p1;
   char(*p2);
   
   p1=a;
   printf("%c\n",*p1);

   p2=&a;
   printf("%s\n",*p2);
}


五,掌握函数指针

在硬件编程中,函数指针很常用,有时用数组保存函数指针和其它类型的指针。
下面是个最简单的例子。

int (*f)(int a,int b);
int add(int a,int b)
{
    return a+b;
}
void test()
{
   f=add;
   printf("%d\n",f(4,2));
}


据说如果连setjmp和longjmp这两个函数都玩得很熟,那就不是入门,而是高手了。
当然,C语言只是一种计算机语言,还有很重要的数据结构和算法。
暂时觉得主要是这几个,不当之处请指正。

----------------------------------------------7/9 添加---------------------------------------------------
在硬件设计中对位的操作可以用结构体设置位段。
在一般软件设计中,有些变量只有(0,1)两种状态的值,也可以这样设置,以节省空间。

typedef unsigned char byte;
struct{
        byte A :1;
        byte B :1;
        byte C :1;
        byte   :1;
        byte E :1;
        byte   :1;
        byte   :1;
        byte K :1;
}Bits;
void test()
{
       Bits.A=1; //如果赋值2,结果会是0
       printf("%d\n",Bits.A);
}


[ 本帖最后由 powerwind 于 2006-7-9 22:40 编辑 ]

Leon001 发表于 2006-6-30 23:31

未入门啊,晕低啊

Freedomer 发表于 2006-7-8 00:40

原来与入门还有一段很长的距离.....!!

jinry 发表于 2006-7-12 01:10

没有详细讲到数据类型,运算符

iptton 发表于 2006-12-19 14:18

顶上来...

gduter 发表于 2006-12-22 21:38

门在哪里?

iptton 发表于 2006-12-22 21:56

顺着墙摸
遍历了所有的墙就会找到门了...

不会游泳鱼 发表于 2006-12-23 18:11

快摸到地板了还没找到门..

iptton 发表于 2006-12-23 18:15

楼上的水帖说明:找到一个正确的方向的重要性..

owenboss 发表于 2006-12-24 18:54

死啦墙还没有找到~~~
页: [1]
查看完整版本: 你的C语言入门了吗?