It is better to have the ability of fast learning
有一天你覺得甚麼都知道了 可悲
有一天你卻發現你甚麼都不會 加油吧
有一天你發現你又甚麼都會了 繼續
有一天你發現你甚麼都不會了 成功了
精通,就像你对1~10的理解……
等你不在问这样的话时你就差不多了!
内功=算法+数据结构+编译原理+操作系统原理+软件工程+英文
精通...不太可能...除非你是计算机,可以把肚子当硬盘,把肠胃当内存,把脑子当CPU,那大概可以考虑~
精通C语言往往代表你精通的不是C语言本身,而是操作系统本身,处理器本身,不了解硬件,不可能精通C语言
程序语言只不过是人类思想具体表现形式的一种
1)你已经认为C++和汇编语言都是很简单的语言,并能够自如地运用;
2)你能够在30分钟之内想到正确的五子棋AI算法设计思 路和方向;
3)你完全理解STL为什么这么重要;
4)你能够独立地解决所有的编译与链接问题,哪怕你从来没有遇到的问题,你也不需要询问任何人;
5)英文 网站是你的首要信息来源;
6)能够读懂英语写成的国际标准,比如NTFS磁盘 ......
It is better to have the ability of fast learning
有一天你覺得甚麼都知道了 可悲
有一天你卻發現你甚麼都不會 加油吧
有一天你發現你又甚麼都會了 繼續
有一天你發現你甚麼都不會了 成功了
精通,就像你对1~10的理解……
等你不在问这样的话时你就差不多了!
内功=算法+数据结构+编译原理+操作系统原理+软件工程+英文
精通...不太可能...除非你是计算机,可以把肚子当硬盘,把肠胃当内存,把脑子当CPU,那大概可以考虑~
精通C语言往往代表你精通的不是C语言本身,而是操作系统本身,处理器本身,不了解硬件,不可能精通C语言
程序语言只不过是人类思想具体表现形式的一种
1)你已经认为C++和汇编语言都是很简单的语言,并能够自如地运用;
2)你能够在30分钟之内想到正确的五子棋AI算法设计思 路和方向;
3)你完全理解STL为什么这么重要;
4)你能够独立地解决所有的编译与链接问题,哪怕你从来没有遇到的问题,你也不需要询问任何人;
5)英文 网站是你的首要信息来源;
6)能够读懂英语写成的国际标准,比如NTFS磁盘 ......
#include <stdlib.h>
#include<stdio.h>
#include<time.h>
#define randomize() srand((unsigned)time(NULL)) //定义一个宏
int main(void)
{
int i;
printf("Ten random numbers from 0 to 99\n\n");
randomize();
for(i=0; i<100; i++)
{
printf("%d\n", rand() % 100);
sleep(1);
}
return 0;
}
<运行>
root@farsight:/mnt/hgfs/E/yinhui/12.3/msg# gcc tttt.c -o tttt
root@farsight:/mnt/hgfs/E/yinhui/12.3/msg# ./tttt
Ten random numbers from 0 to 99
87
80
68
39
39
53
14
96
46 ......
一:字符串类型分类:
1. C风格字符串:起源于C,并在C++中得到支持。
a. 存储方式:被存储在一个字符数组中,通过一个char*类型的指针来操纵它。
b. 提供的库函数:包含头文件:#include<cstring>
a) int strlen( const char* );//返回字符串的长度
b) int strcmp( const char*, const char* );//比较两个字符串是否相等
c) char* strcpy( char*, const char* );//把第二个字符串拷贝到第一个字符串中
#include <iostream>
#include <cstring>
#include <stdio.h>
using namespace std;
void main()
{
char* arraya = "hello world!";
int c;
c = strlen(arraya);
cout<<c<<endl;
char arrayb[80];
char * test = NULL;
&n ......
一:字符串类型分类:
1. C风格字符串:起源于C,并在C++中得到支持。
a. 存储方式:被存储在一个字符数组中,通过一个char*类型的指针来操纵它。
b. 提供的库函数:包含头文件:#include<cstring>
a) int strlen( const char* );//返回字符串的长度
b) int strcmp( const char*, const char* );//比较两个字符串是否相等
c) char* strcpy( char*, const char* );//把第二个字符串拷贝到第一个字符串中
#include <iostream>
#include <cstring>
#include <stdio.h>
using namespace std;
void main()
{
char* arraya = "hello world!";
int c;
c = strlen(arraya);
cout<<c<<endl;
char arrayb[80];
char * test = NULL;
&n ......
一、c程序存储空间布局
C程序一直由下列部分组成:
1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;
2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。
3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。
4)栈——增长方向:自顶向下增长;自动变量以及每次函数调用时所需要保存的信息(返回地址;环境信息)。
5)堆——动态存储分。
|-----------|
| |
|-----------|
| 栈 |
|-----------|
| | |
| |/ |
| |
| |
| /| |
| | |
|-----------|
| 堆 |
|-----------|
| 未初始化 |
|-----------|
| 初始化 |
|-----------|
| 正文段 |
|-----------|
二、 面向过程程序设计中的static
1. 全局静态变量
在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量。
1)内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在)
2)初始化:未经初始化的全局静态变量会被程序自动初始化为0( ......
一、c程序存储空间布局
C程序一直由下列部分组成:
1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;
2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。
3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。
4)栈——增长方向:自顶向下增长;自动变量以及每次函数调用时所需要保存的信息(返回地址;环境信息)。
5)堆——动态存储分。
|-----------|
| |
|-----------|
| 栈 |
|-----------|
| | |
| |/ |
| |
| |
| /| |
| | |
|-----------|
| 堆 |
|-----------|
| 未初始化 |
|-----------|
| 初始化 |
|-----------|
| 正文段 |
|-----------|
二、 面向过程程序设计中的static
1. 全局静态变量
在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量。
1)内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在)
2)初始化:未经初始化的全局静态变量会被程序自动初始化为0( ......
Lua与C交互入门
简介
Lua与C/C++结合是很紧密的, Lua与C++交互是建立在Lua与C的基础上的, 所
以偶先从Lua与C讲起.
正如第一讲所说, 运行Lua程序或者说调用Lua主要有两种方式:
* 通过命令行执行"Lua"命令
* 通过Lua的C库
虽然此前偶们一直用第一种方式, 但偶要告诉你, 通过Lua的C库执行才是游戏中
常用的方式.
2.Lua的C库
Lua的C库可以做为Shared Library调用, 但一般开发游戏时会把Lua的所有源程序
都包含在内, 并不把Lua编译成共享库的形式. 因为Lua程序只有100多K, 而且几乎
可以在任何编译器下Clean Compile. 带Lua源程序的另一个好处时, 可以随时对Lua
本身进行扩充, 增加偶们所需的功能.
Lua的C库提供一系列API:
* 管理全局变量
* 管理tables
* 调用函数
* 定义新函数, 这也可以完全由C实现
* 垃圾收集器Garbage collector, 虽然Lua可以自动进行, 但往往不是立即执行的,
所以对实时性要求比较高的程序, 会自己调用垃圾收集器
* 载入并执行Lua程序, 这也可以由Lua自身实现
* 任何Lua可以实现的功能, 都可以通过Lua的C API实现, 这对于优化程序的运行速度
有帮助. 经常调用的共用的Lua程序片断可以转成C程序, 以提高效率. 连Lu ......
自动转换遵循以下规则:
1) 若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
2) 转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。
a.若两种类型的字节数不同,转换成字节数高的类型
b.若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型
3) 所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
4) char型和short型参与运算时,必须先转换成int型。
5) 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。
隐式转换
隐式类型转换分三种,即算术转换、赋值转换和输出转换。
1.算术转换
进行算术运算( ......