1,main():
在C/C++中,main函数由系统直接调用,是程序执行的入口。一个工程中必须有且只能有一个。
2,字符串:
· 双撇号中间夹裹的若干个字符。如:“abcd”。
· “/0”是字符串的结束标志,“abcd”等同于“abcd/0”。
· 注意单撇号夹裹的一个字符叫字符,中间只能夹裹一个字符。
3,三字母词:
· 如:“??(”等同于“[”, "??<"等同于"{", "??)"等同于"]" "??>"等同于"}"
遇到的问题:printf("(are you ok??)"); 输出的结果却是 (are you ok]
解决办法:用转义字符。修改后:printf("(are you ok/?/?)");
4,转义字符:
· 能解决“三字母词“输出问题。
· 常用转义字符:\a:警报,蜂鸣器响;
\n:换行
\t:水平制表符;
\r:回车;
\o,\oo,\ooo(o代表一个八进制数字),输出与该八进制码对应的字符;
\xhhh:(h代表一个十六进制数字),输出与该十六进制对应的字符;
5,数据类型;
char short int long longlong float doudt
位bit(计算机最小单位) 8 16 32 32 64 32 64 (了解)
字节byte(编程最小单位) 1 2 4 4 8 4 8 (输出值)
注:一个字节等于8个bit位
6,常量:
1. 字面常量(字面值);
2. const定义的变量
const int age=10, (age还是变量,只不过有常量属性。
3. #include定义的标识常量
#include PAI 3.14 (后面程序出现的PAI全为3,14)
4. 枚举常量
enum sex { male=1,womale=0, }
枚举常量是要占用内存的,需要在内存中开辟空间来存放枚举变量,其常量值在没有赋值时,系统会默认给它的第一个变量赋值0,后面依次 为1,2,3.。。最大的好处是程序可读性增强。
7,变量
命名规则:
· 只能由数字,下划线,字母三部分组成;
· 首位不能为数字 ;
· 不能为特殊字符(关键字)。
这里简要介绍几个关键字;
register: 寄存器
如:register int age=0;
这种变量存放在CPU的寄存器中,使用时,不需要访问内存,而直接从寄存器中读写, 这样可提高效率。 寄存器变量的说明符是register。 对于循环次数较多的循环控 制变量及循环体内反复使用的变量均可定义为寄存器变量。只有局部自动变量和形式参数才可以定义为寄存器变量。因为寄存器变量属于动态存储方式(在程序运行期间根 据需要进行动态的分配存储空间的方式。常见的方法是使用指针,对将要存的数据进行动态的内存分配)。凡需要采用静态存储方式(指在程序运行期间分配固定的存储空 间的方式)的量不能定义为寄存器变量。
volatile
当要求使用volatile声明变量值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据,准确的说,遇到volatile声明的变量时,编译 器对访问该变量的代码不会进行优化,从而可以提供对特殊位置的稳定访问。
变量可以分为局部变量和全局变量。两者区别有两点:一是局部变量只在本函数中有效,出了本函数范围自动消除。全局变量的有效范围是从定义变量的位置到本源文件结束;二是局部变量是程序运行到该函数时给该变量分配内存空间,函数结束则释放该内存空间;全局变量是程序运行前事先分配内存空间,程序结束时释放该内存空间。 来看一个例子:
#include<stdio.h>
int* test()
{
int num = 0; //定义的局部变量
return & num;
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
int*ret = test;
}
}
在这个程序中,num为test函数中定义的一个局部变量,程序要求输出num的地址,而它的生命周期只在test函数中,一旦函数结束,它就是无用的,等下次你访问ret这个指针里的地址,那就是非法访问了。