一个人要想在某一方面有所成就,就必须有半年以上的时间,每天花 10 个小时“浸泡”在这件事情上,最终一定会有所收获。
c语言 关键字:
C语言也是一门通用性的语言,并没有针对某个领域进行优化,就目前而言,C语言主要用于较底层的开发,例如:
Windows、Linux、Unix 等操作系统的内核90%以上都使用C语言开发;
开发硬件驱动,让硬件和操作系统连接起来,这样用户才能使用硬件、程序员才能控制硬件;
单片机和嵌入式属于软硬件的结合,有很多使用C语言的地方;
开发系统组件或服务,用于支撑上层应用;
编写PHP扩展,增强PHP的功能;
如果对软件某个模块(例如算法和搜索部分)的效率要求较高,也可以使用C语言来开发。
开发硬件驱动要学习数字电路,了解 Windows 或 Linux 内核,阅读硬件厂商的接口说明书;
从事嵌入式开发要学习数字电路、模拟电路、ARM、Linux、Qt等;
开发PC软件要学习Windows编程,了解 GTK
1.ANSI C、ISO C、C89、C90,要知道这些标准的内容都是一样的
2.c99
3.c11
重点(关于缓冲区)
#include <stdio.h>
int main()
{
int a, b=999;
char str[30];
printf("b=%d\n", b);
scanf("%d", &a);
scanf("%d", &b);
scanf("%s", str);
printf("a=%d, b=%d, str=%s\n", a, b, str);
return 0;
}
b=999
100 http://c.biancheng.net↙
a=100, b=999, str=http://c.biancheng.net
重点来啦(是否忽略空白符)
不忽略:
#include <stdio.h>
int main()
{
int a = 1, b = 2;
scanf("a=%d", &a);
scanf("b=%d", &b);
printf("a=%d, b=%d\n", a, b);
return 0;
}
a=99↙
a=99, b=2
a=99 b=200↙
a=99, b=2`
a=99b=200↙
a=99, b=200(可以)
scanf("%d", &b);
a=100↙
200↙
a=100, b=200
重点二:刷新缓冲区
方法一:#include<unistd.h>
fflush(stdout);
方法二:(使用 getchar() 清空缓冲区)
int c;
while((c = getchar()) != '\n' && c != EOF);下面例子
scanf("%*[^\n]"); scanf("%*c"); 正则表达
指针
*p++ 等价于 *(p++),表示先取得第 n 个元素的值,再将 p 指向下一个元素,上面已经进行了详细讲解。
*++p 等价于 *(++p),会先进行 ++p 运算,使得 p 的值增加,指向下一个元素,整体上相当于 *(p+1),所以会获得第 n+1 个数组元素的值。
(*p)++ 就非常简单了,会先取得第 n 个元素的值,再对该元素的值加 1。假设 p 指向第 0 个元素,并且第 0 个元素的值为 99,执行完该语句后,第 0 个元素的值就会变为 100
char str[] = "http://c.biancheng.net";
char *str = "http://c.biancheng.net";
有!它们最根本的区别是在内存中的存储区域不一样,字符数组存储在全局数据区或栈区,第二种形式的字符串存储在常量区。全局数据区和栈区的字符串(也包括其他数据)有读取和写入的权限,而常量区的字符串(也包括其他数据)只有读取权限,没有写入权限。
使用
$ gcc hello.c
$ ./a.out
Hello, World!