• C++基础(三)


    0x09 数字

    通常,当我们需要用到数字时,我们会使用原始的数据类型,如 int、short、long、float 和 double 等等。这些用于数字的数据类型,其可能的值和数值范围
    
    常用姿势
    #include <iostream>
    using namespace std;
     
    int main ()
    {
       // 数字定义
       short  s;
       int    i;
       long   l;
       float  f;
       double d;
       
       // 数字赋值
       s = 10;      
       i = 1000;    
       l = 1000000; 
       f = 230.47;  
       d = 30949.374;
       
       // 数字输出
       cout << "short  s :" << s << endl;
       cout << "int    i :" << i << endl;
       cout << "long   l :" << l << endl;
       cout << "float  f :" << f << endl;
       cout << "double d :" << d << endl;
     
       return 0;
    }
    
    

    数学函数

    序号 函数 & 描述
    1 double cos(double); 该函数返回弧度角(double 型)的余弦。
    2 double sin(double); 该函数返回弧度角(double 型)的正弦。
    3 double tan(double); 该函数返回弧度角(double 型)的正切。
    4 double log(double); 该函数返回参数的自然对数。
    5 double pow(double, double); 假设第一个参数为 x,第二个参数为 y,则该函数返回 x 的 y 次方。
    6 double hypot(double, double); 该函数返回两个参数的平方总和的平方根,也就是说,参数为一个直角三角形的两个直角边,函数会返回斜边的长度。
    7 double sqrt(double); 该函数返回参数的平方根。
    8 int abs(int); 该函数返回整数的绝对值。
    9 double fabs(double); 该函数返回任意一个十进制数的绝对值。
    10 double floor(double); 该函数返回一个小于或等于传入参数的最大整数。
    #include <iostream>
    #include <cmath>
    using namespace std;
     
    int main ()
    {
       // 数字定义
       short  s = 10;
       int    i = -1000;
       long   l = 100000;
       float  f = 230.47;
       double d = 200.374;
    
       // 数学运算
       cout << "sin(d) :" << sin(d) << endl;
       cout << "abs(i)  :" << abs(i) << endl;
       cout << "floor(d) :" << floor(d) << endl;
       cout << "sqrt(f) :" << sqrt(f) << endl;
       cout << "pow( d, 2) :" << pow(d, 2) << endl;
     
       return 0;
    }
    

    随机数

    在许多情况下,需要生成随机数。关于随机数生成器,有两个相关的函数。一个是 rand(),该函数只返回一个伪随机数。生成随机数之前必须先调用 srand() 函数。
    
    下面是一个关于生成随机数的简单实例。实例中使用了 time() 函数来获取系统时间的秒数,通过调用 rand() 函数来生成随机数:
    
    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    
    using namespace std;
     
    int main ()
    {
       int i,j;
     
       // 设置种子
       srand( (unsigned)time( NULL ) );
    
       /* 生成 10 个随机数 */
       for( i = 0; i < 10; i++ )
       {
          // 生成实际的随机数
          j= rand();
          cout <<"随机数: " << j << endl;
       }
    
       return 0;
    } 
    

    0x10 数组

    简介

    C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
    
    数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、...、numbers[99] 来代表一个个单独的变量。数组中的特定元素可以通过索引访问。
    
    所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。
    

    实际使用

    声明数组

    声明一个数组,需要指定元素的类型和元素的数量,如下所示:
    type arrayName [ arraySize ];
    
    这叫做一维数组。arraySize 必须是一个大于零的整数常量,type 可以是任意有效的 C++ 数据类型。例如,要声明一个类型为 double 的包含 10 个元素的数组 balance,声明语句如下:
    double balance[10];
    现在 balance 是一个可用的数组,可以容纳 10 个类型为 double 的数字。
    

    初始化数组

    double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
    大括号 { } 之间的值的数目不能大于我们在数组声明时在方括号 [ ] 中指定的元素数目。
    
    如果省略掉了数组的大小,数组的大小则为初始化时元素的个数。因此,如果:
    double balance[] = {1000.0, 2.0, 3.4, 17.0, 50.0};
    

    访问数组

    double salary = balance[9];
    

    实例

    #include <iostream>
    using namespace std;
    
    #include <iomanip>
    using std::setw;
    
    int main()
    {
        int n[10]; // 声明数组  n 是一个包含 10 个整数的数组
    
        // 初始化数组元素          
        for (int i = 0; i < 10; i++)
        {
            n[i] = i + 100; // 设置元素 i 为 i + 100
        }
        cout << "Element" << setw(13) << "Value" << endl;
    
        // 输出数组中每个元素的值                     
        for (int j = 0; j < 10; j++)
        {
            cout << setw(7) << j << setw(13) << n[j] << endl;
        }
    
        return 0;
    }
    

    0x11 字符串

    C风格字符串

    C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持。字符串实际上是使用 null 字符 '' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。
    
    下面的声明和初始化创建了一个 "Hello" 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 "Hello" 的字符数多一个。char greeting[6] = {'H', 'e', 'l', 'l', 'o', ''};
    
    依据数组初始化规则,可以把上面的语句写成以下语句:
    
    char greeting[] = "Hello";
    
    不需要把 null 字符放在字符串常量的末尾。C++ 编译器会在初始化数组时,自动把 '' 放在字符串的末尾
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	char greeting[6] = { 'H', 'e', 'l', 'l', 'o', '' };
    
    	cout << "Greeting message: " << endl;
    	cout << greeting << endl;
    
    	return 0;
    }
    

    C++中的函数操作以null结尾的字符串

    序号 函数 & 目的
    1 strcpy(s1, s2); 复制字符串 s2 到字符串 s1。
    2 strcat(s1, s2); 连接字符串 s2 到字符串 s1 的末尾。
    3 strlen(s1); 返回字符串 s1 的长度。
    4 strcmp(s1, s2); 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。
    5 strchr(s1, ch); 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
    6 strstr(s1, s2); 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。
    #include <iostream>
    #include <cstring>
    
    using namespace std;
    
    int main ()
    {
       char str1[11] = "Hello";
       char str2[11] = "World";
       char str3[11];
       int  len ;
    
       // 复制 str1 到 str3
       strcpy( str3, str1);
       cout << "strcpy( str3, str1) : " << str3 << endl;
    
       // 连接 str1 和 str2
       strcat( str1, str2);
       cout << "strcat( str1, str2): " << str1 << endl;
    
       // 连接后,str1 的总长度
       len = strlen(str1);
       cout << "strlen(str1) : " << len << endl;
    
       return 0;
    }
    

    C++中的string类

    C++ 标准库提供了 string 类类型,支持上述所有的操作,另外还增加了其他更多的功能
    
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main ()
    {
       string str1 = "Hello";
       string str2 = "World";
       string str3;
       int  len ;
    
       // 复制 str1 到 str3
       str3 = str1;
       cout << "str3 : " << str3 << endl;
    
       // 连接 str1 和 str2
       str3 = str1 + str2;
       cout << "str1 + str2 : " << str3 << endl;
    
       // 连接后,str3 的总长度
       len = str3.size();
       cout << "str3.size() :  " << len << endl;
    
       return 0;
    } 
    

    0x12 指针

    每个变量都有一个内存位置,每一个内存位置都定义了可使用连字号&,运算符访问的地址,表示了内存中的地址
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	int  var1;
    	char var2[10];
    
    	cout << "var1 变量的地址: ";
    	cout << &var1 << endl;
    
    	cout << "var2 变量的地址: ";
    	cout << &var2 << endl;
    
    	return 0;
    }
    

    指针

    指针也是一个变量,其值为另一个变量的地址,即内存位置的直接地址,同其他变量或常量一样,使用指针存储其他变量地址钱必须对其进行声明,格式如下:
    type *var-name;
    
    type是指针的基类型,必须是一个有效的C++数据类型,var-name为指针变量的名称,用来声明指针的*同乘法是一样的
        
    int    *ip;    /* 一个整型的指针 */
    double *dp;    /* 一个 double 型的指针 */
    float  *fp;    /* 一个浮点型的指针 */
    char   *ch     /* 一个字符型的指针 */
    
    所有指针的值的实际数据类型,整型、浮点型、字符型均一样,每个都代表内存地址的十六进制数,不同数据类型的指针间唯一不同:指针所指的变量或常量的数据类型不同
    

    C++中使用指针

    定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值。这些是通过使用一元运算符 * 来返回位于操作数所指定地址的变量的值
    
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	int  var = 20;   // 实际变量的声明
    	int *ip;        // 指针变量的声明
    
    	ip = &var;       // 在指针变量中存储 var 的地址
    
    	cout << "Value of var variable: ";
    	cout << var << endl;
    
    	// 输出在指针变量中存储的地址
    	cout << "Address stored in ip variable: ";
    	cout << ip << endl;
    
    	// 访问指针中地址的值
    	cout << "Value of *ip variable: ";
    	cout << *ip << endl;
    
    	return 0;
    }
    
  • 相关阅读:
    微软一站式示例代码库 11月小结
    Linux服务器使用SSH的命令 [转]
    简明 Vim 练级攻略 [转]
    如何在Windows下使用LAPACK和ARPACK [转]
    使用setuptools自动安装python模块 [转]
    VS2010下GSL的配置 [转]
    poj3255 Roadblocks ***
    协方差矩阵的详细说明 [转]
    VC环境下LIB引用问题(LNK1104) [转]
    Dreamweaver CS5: "Configuration error"
  • 原文地址:https://www.cnblogs.com/Yang34/p/14188294.html
Copyright © 2020-2023  润新知