你的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 编辑 ] 未入门啊,晕低啊 原来与入门还有一段很长的距离.....!! 没有详细讲到数据类型,运算符 顶上来... 门在哪里? 顺着墙摸
遍历了所有的墙就会找到门了...
快摸到地板了还没找到门.. 楼上的水帖说明:找到一个正确的方向的重要性.. 死啦墙还没有找到~~~
页:
[1]