C语言并不困难,只要你数学学得好,学C很快的。
其实C是一门和数组,指针,结构体,内存分配紧密联系的语言。
你没有学过计算机原理,没有学过编译原理,没有学习过数据结构直接理解C语言是很困难的。
要学好C语言,多写代码,把课后习题多练习几遍,不要抠那些怪题,把基本概念理清楚了很简单的。
你没有电脑没关系,学校有机房的,不要不好意思,学C语言一定要多写,熟能生巧,光看书光想还不如敲几行代码验证下。
我帮你稍微过滤一遍,希望对你有好处。
1. hello word!
//#include <stdio.h> //引用标准输入输出库文件。这个库里面有些什么呢?你最常用的就是printf() scanf()
int main() //main函数是很多编译器(如gcc 如clang)要求的,没有这个无法编译成功
//函数的声明其实这样的
//datatype functionname (datatype arg1, datatype arg2...)
//比如 int a(int x, int y)
//你声明了一个函数a,该函数的返回值为int型,该函数的输入参数有两个int型x和y
{ //c编译器规定了函数里面的内容必须在{}里面
printf("Hello world\n") //调用stdio.h里面的printf函数输出字符串"Hello world", '\n'为转意字符(还有'\t'...),也是编译器里面设定好的,意思是换行
return 0 //因为int main()所以必须返回一个int行的变量
}
2. 变量
2.1 常见变量 int char float double
你要弄明白这些变量类型的定义是什么,多少位,表达值的范围是多少?
2.2 全局变量和局部变量
3. 逻辑运算符好
&&||
位操作符 | &
移位操作符 << >>
~0是什么含义, 为什么是 11111.......1(2进制)
i++, +ii什么意思
i -= 8什么意思
4. 字符串(考试中应该会有先一堆和字符串有管的题目)
char *a 和 char a[ ]是等价的,为什么是等价的?
char *pp = &a[ ] = a, 为什么这个成立?
怎么读入字符串?getchar()char a[]scanf("%s", a)
5. 控制流程
if else
for
while
do while
switch case
6. 数组和指针
数组怎么遍历
int i = 0
for ( i = 0i <100i++)
{
statement
}
什么时候用 while () {}
什么时候用 do {} while
指针怎么灵活应用
int a[ ]
为什么*a = a[0] *(a+i) = a[i]
6. 结构体 怎么定义,怎么用,怎么赋值
struct Point
{
int x
int y
}
typedef Point point// typedef是什么?
7. 简单的数据结构在C的实现,链表,什么是链表,链表怎么定义结构体,怎么初始化,怎么加点,怎么遍历,在学习的时候和数组比较着学,难点的是指针的malloc和free,为什么malloc指针,为什么free指针,对比数组有什么好处,有什么不好的地方。什么是堆栈?为什么先如后出?怎么用代码实现?
下买是简单的例子:
//define structtypedef node * Node
typedef List * List
struct node
{
int value
Node next
}
//init
List list
list = (List)malloc(sizeof(List)) //为什么要malloc?
if (list == NULL)
printf("Fail to allocate storage\n") //为什么要判断list为NULL
//C语言中的空指针是什么?void *p
list->next =NULL
...
//input node
//push node
//print list
//怎么遍历List
for(list = list -> next list != NULL list = list -> next)
{
statement
}
c学起来也不是很难,主要是指针和其他的知识点入数组、函数等组合起来难理解一些要想学习,主要有几点需要注意
一、记忆部分
1、保留字,如if,int,for等
2、常规的结构,如条件,循环,switch、数组的结构,指针定义,结构体的定义等
3、语法的构成,如printf,scanf等一些语句的构成
4、一些系统带的函数,常用的要记住,如strlen,printf等
5、一些经典的算法,如素数的计算,排序的写法等
二、算法,语法等
这个就是解决问题的方法,没有好的捷径,只要慢慢的积累,数学方面的算法要加深
其实,c基础也就是那么一些基础点
1、保留字
2、定义变量等,int,float等
3、条件语句if,选择语句switch,循环,do--while、for、while、goto
4、注意逗号语句,scanf和printf要熟练,知道格式(这个很基础,用错了很麻烦)
5、数组,这里注意二维数组和字符串的一些函数
6、指针,这个是难点,也就是说很难理解,特别是和数组函数结构体等结合使用的时候
7、结构体共用体,这个不难,就是繁琐而已。这里涉及到链表,其实不难理解,可以想象成一串珠子,next指针就是串珠子的线,结构体就是珠子
8、文件操作,这个就是套用格式,没难度
9、宏定义,这个没难度,就是最简单的直接替换。注意一点就是在定义宏的时候多用几个括号增加优先级没坏处
10、函数。这个难度不大,主要是要理解,参数是在调用的时候另外开辟内存空间。除了数组和用&定义的参数。要不然子函数改变了参数变量,调用它的地方的变量时不会改变的
其实就是这些基本的知识点