C++高级编程1 C++速成

1.常用的预处理指令

         #include [file]

         #define key value 这个是在C中经常使用的,定义常量数值,用于字符串替换的工作。

         #ifndef key #ifdef key

         #define key

         #endif

         #pragma once 会因为编译器而有所不同,如果编译器支持的话可以用于代替上面的指令,在预处理阶段会提示警告。

         #ifndef KEY

         #define KEY

         //code

         #endif

         可以使用#pragma once 代替。

2.C++运行程序传递的参数

         int main(int argc,char ** argv):

         其中argv表示的是这些参数,第一个参数都是程序的名字。

3.变量初始化

         C++中如果使用了未初始化的变量,在程序编译期间会报错,但是我们可以通过指针输出指针指向的内存区域的对象数据,但是该数据是乱起八糟。

         对于利用char 指针指向字符串,删除的时候需要使用 delete [] p,但是问题是必须char指向的是在堆中的内存空间,而不可以是字符串常量。

    char *pChar = new  char[100];

    pChar[0] = 'a';

    pChar[1] ='b';

    pChar[2] = '\0';

    cout << pChar << endl;

    delete []pChar;

这个样子是可以的,但是如果char *p = "yangteng";但是不可以delete掉,因为这样的话,指针指向的是在常量区的数据.不可以删除.但是在此语句之前需要删除delete []p;

4.枚举类型

    enum Type{

        yang,teng=10,fei

    };

    cout <<"enum yang:"<< yang << endl;

    cout <<"enum teng:" << teng << endl;

    cout << "enum fei:" << Type::fei << endl;

5.C++11规范中新增加的循环:

int arr[] = {1,2,3,4,5,6};

for(auto i : arr){ // for(auto & i : arr)

    i  = i*2;

    cout << i << " " ;

}

cout << endl;

 

for(auto i : arr){

    cout << i<<" " ;

}

cout << endl;

6数组的初始化

    int arr [10]={10};//只有第一个元素是10,其他的都初始化为0

    for (int i =0; i<sizeof(arr)/sizeof(int) ; i++){

        cout << arr[i] << " " ;

    }

    cout << endl;

    在C++11 中引入了array (#include <array>)初始化为 0,但是大小在编译期间就已经决定了,不可以字运行的时候改变,运行时数组不会变大或者是变小。

    array<int,4> arr = {9,7};

    for(auto i : arr){

        cout << i << " ";

    }

7.堆栈的知识

    堆栈和栈是在编译期间决定了内存的大小,因此在编程中是不可以声明大小可以变化的数组,必须是确定的值。

    const int size = 100;

    int arrays[size] ;

    这样是对的,但是如果将const删除掉,就会出现编译不通过的错误提示。

8.字符串的形式

    C风格的字符串:

    char  arrayString[10] = “yang”;最后面需要考虑\0字符。

    char* p = “yang;

    c++中使用的是string

9.const用法

定义常量 const float PI = 3.1415926;

const保护参数, void fun(const int a); 放置在程序中修改参数变量的值。

修饰方法,放在最后面,在成员函数中,如果不修改成员变量的话,就最好使用const修饰成员函数,然后在程序函数中如果不小心修改了成员变量,就会编译报错。

 

posted on 2013-11-05 22:42  追梦的飞飞  阅读(752)  评论(0编辑  收藏  举报