您的位置:首页 > 编程语言 > C语言/C++

C++学习笔记——基础知识

2006-05-08 14:00 956 查看
C++学习笔记——基础知识
1  语句可以分为如下几类:

声明:声明变量,函数,数据类型(类,结构,枚举等),宏。声明不占用内存。
定义:定义如上类型的实例,定义要求系统给出资源,开辟内存。
过程语句:流程控制语句(do while ,while,for,continue,break,if else,)表达式语句,赋值语句等。
赋值语句:得以赋值的变量为左值,产生值的变量为右值。每一个赋值语句都有返回值,为一个右值。尽量使用+=这样的复合赋值运算符号
 

2  标示符(包括变量和函数等)的作用域

标示符的作用域可以分为全局作用域(global scope),局部(local scope),文件作用域(file scope),作用域是指标示符的可见性,通过标示符的位置来说明(文件作用域例外)的,不同作用域的变量可以有相同的标示符。
局部变量的作用域终止于声明该变量的语句块的末尾。
全局作用域是整个程序。全局作用域解析符::
文件作用域是整个转换单元(包括#include包含的文件)可见
作用域的屏蔽:同名的局部变量会屏蔽上层级别的同名局部变量

3存储类型:

Auto:每次执行到变量定义语句时,都将在内存中为该变量产生一个新的副本,并对其初始化,当离开变量的生存空间时,变量内存释放。存储在内存的栈空间
static的局部变量,作用域还是限于声明的语句块,但是在语句执行期间,变量始终保持它的值,初始化只在第一次执行时有用。static类型的变量存储在内存的固定空间
Extern:声明在另外一个转换单元要用到的变量,可以在函数的内部和外部,在内部那么只有这个函数可以使用该外部变量
Register:
在定义变量时一般要求初始化。
 

4 Const修饰符

Const char * str;指针指向的量不可变
Char* const str;指针不可变
Int fun() const;函数不可改变参数
Const int & a;
Const int a;
Const char* const str;

5 Wchar_t型变量:字符类型16位

6
参数列表可变的函数:int func(int x,…)
无名形式参数:int func(int x,int){…}
默认的函数参数:void func(int = 5,double = 2);
良好的程序设计提倡每个函数都完成一个特定的功能

7函数重载:

1为不同操作重载
2为不同格式重载
Typedef的另一种用法:typedef long red;当red的类型改变时直接改变typedef语句就可
 

8程序的内结构:

程序被划为4个logic段,可执行代码,静态数据,堆和栈
可执行代码和静态数据方在固定的位置
程序请求动态分配的内存来自于称为堆的内存池
局部数据对象,函数的参数以及调用函数和被调用函数的联系放在栈的内存池
 

9引用:
引用是个别名,一般要求初始化,可以用来简化复杂的表示。返回一个指向局部对象的引用(或者指针)是不容许的。空的引用是不存在的。
 

#include <iostream>
using namespace std;
int amount = 1;//全局变量
void Display();
int* GetData(void);
int main()
{
       cout << amount;
       int amount = 0;
       //Display();
       cout << ::amount;//通过域操作符调用全局变量
//屏蔽了全局amount
       cout << amount << endl;
       if ( int amount = 1)//局部变量,作用域为IF语句内部
       {
              cout << amount << endl;
       }
       else
       {
       }
       for (int i = 1;i<3;i++)
       {
              Display();
              cout << endl;
       }
       int* c = GetData();
       cout << *c;
       return 0;
}
void Display()
{
       static int amount = 3;
       amount--;
       cout << amount << endl;
}
int* GetData(void)
{
static int calendar = 40;//要用静态类型的数据
calendar++;
       return &calendar;//不能返回一个局部变量的引用或者指针
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息