学习编程固然需要英语基础,但是要求没有那么严苛拉,初中水平完全可以胜任呢!
编程语言起源于美国,由英文构成,包括几十个英文的关键字及几百个英文的函数,但它们都是孤立的单词,不构成任何语句,不涉及任何语法。
32个关键字:
几百个函数就没那么好记了,每种编程语言都会提供配套的文档,用时查询文档即可。
1.指针本身的类型是什么? 先看下面的例子:int a;//a的类型是什么? 对,把a去掉就可以了。因此上面的4个声明语句中的指针本身的类型为: int* int** int (*)[3] int (*)() 它们都是复合类型,也就是类型与类型结合而成的类型。意义分别如下: point to int(指向一个整数的指针) pointer to pointer to int(指向一个指向整数的指针的指针) pointer to array of 3 ints(指向一个拥有三个整数的数组的指针) pointer to function of parameter is void and return value is int (指向一个函数的指针,这个函数参数为空,返回值为整数)
2.数组的元素个数,必须作为整数常量在编译阶段就求出来。 int i; int a[];//不合法,编译不会通过。 也许有人会奇怪char str[] = “test”;没有指定元素个数为什么也能通过,因为编译器可以根据后面的初始化字符串在编译阶段求出来, 不信你试试这个:int a[]; 编译器无法推断,所以会判错说“array size missing in a”之类的信息。不过在最新的C99标准中实现了变长数组【注6】 注6:如果你是一个好奇心很强烈的人,就像我一样,那么可以查看C99标准6.7.5.2。
3.const和volatile在类型声明中的位置 在这里我只说const,volatile是一样的【注12】!注12:顾名思义,volatile修饰的量就是很容易变化,不稳定的量,它可能被其它线程,操作系统,硬件等等在未知的时间改变,所以它被存储在内存中,每次取用它的时候都只能在内存中去读取,它不能被编译器优化放在内部寄存器中。类型声明中const用来修饰一个常量,我们一般这样使用:const在前面const int;//int是constconst char*;//char是constchar* const;//*(指针)是constconst char* const;//char和*都是const对初学者,const char*;和 char* const;是容易混淆的。这需要时间的历练让你习惯它。上面的声明有一个对等的写法:const在后面int const;//int是constchar const*;//char是constchar* const;//*(指针)是constchar const* const;//char和*都是const第一次你可能不会习惯,但新事物如果是好的,我们为什么要拒绝它呢?:)const在后面有两个好处:A. const所修饰的类型是正好在它前面的那一个。如果这个好处还不能让你动心的话,那请看下一个!B.我们很多时候会用到typedef的类型别名定义。比如typedef char* pchar,如果用const来修饰的话,当const在前面的时候,就是const pchar,你会以为它就是const char* ,但是你错了,它的真实含义是char* const。是不是让你大吃一惊!但如果你采用const在后面的写法,意义就怎么也不会变,不信你试试!不过,在真实项目中的命名一致性更重要。你应该在两种情况下都能适应,并能自如的转换,公司习惯,商业利润不论在什么时候都应该优先考虑!不过在开始一个新项目的时候,你可以考虑优先使用const在后面的习惯用法。
后续会持续更新C语言学习方式和注意事项,
网友评论