zoukankan      html  css  js  c++  java
  • C/C++ 基础知识

    C/C++ 基础知识

    C 语言优秀学习网站

    C 语言的注释

    • 单行注释
    /* comment goes here */
    // comment goes here
    
    • 多行注释
    /*
     * comment goes here
     */
    
    • Example
    // 这是一个倒序 9x9 乘法表
    #include <stdio.h>
    int main()
    {
        /* 定义了 i,j,result 三个局部变量 */
        int i, j, result;
        for (i = 9; i > 0; i--) {
            for (j = 1; j <= i; j++) {
                printf("%d*%d=%d	", i, j, i * j);
            }
            printf("
    ");
        }
        return 0;
    }
    
    // 结果
    
    /*
    9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81
    8*1=8   8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64
    7*1=7   7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49
    6*1=6   6*2=12  6*3=18  6*4=24  6*5=30  6*6=36
    5*1=5   5*2=10  5*3=15  5*4=20  5*5=25
    4*1=4   4*2=8   4*3=12  4*4=16
    3*1=3   3*2=6   3*3=9
    2*1=2   2*2=4
    1*1=1
    */
    

    C keywords

    Keywords defined by ANSI and ISO C90.

    auto           double       int            struct
    break          else         long           switch
    case           enum         register       typedef
    char           extern       return         union
    const          float        short          unsigned
    continue       for          signed         void
    default        goto         sizeof         volatile
    do             if           static         while
    

    Words added by ISO C99.(5 个)

    _Bool      _Imaginary     restrict      _Complex      inline   
    

    Words added by ISO C11.(7 个)

    Alignas     _Generic      _Thread_local       _Alignof       _Noreturn      _Atomic  _Static_assert
    

    C 语言关键字

    C 语言的标识符
    C 语言规定,标识符可以是字母 (A~Z,a~z)数字 (0~9)下划线_组成的字符串,并且第一个字符必须是字母下划线
    在使用标识符时还有注意以下几点

    • (1) 标识符的长度最好不要超过 8 位,因为在某些版本的 C 中规定标识符前 8 位有效,当两个标识符前 8 位相同时,则被认为是同一个标识符。

    • (2) 标识符是严格区分大小写的。例如 Googlegoogle 是两个不同的标识符。

    • (3) 标识符最好选择有意义的英文单词组成做到"见名知意",不要使用中文。

    • (4) 标识符不能是 C 语言的关键字

    C 语言数据类型

    参考资料

    在 C 编程语言中,数据类型分类如下...

    • 主数据类型(基本数据类型或预定义数据类型)
    • 派生数据类型(辅助数据类型或用户定义的数据类型)
    • 枚举数据类型
    • void 数据类型

    Primary Datatypes

    • Integer Datatype
    • Floating Point Datatype
    • Double Datatype
    • Character Datatype

    Integer Datatype

    Floating Point Datatypes

    • float
    • double

    Character Datatype

    void Datatype
    void 数据类型表示没有值或没有值。通常,void 用于指定不返回任何值的函数。我们还使用 void 数据类型来指定函数的空参数。

    Enumerated Datatype
    枚举数据类型是用户定义的数据类型,由整数常量组成,每个整数常量都有一个名称。关键字enum用于定义枚举数据类型。

    Derived Datatypes

    • Arrays
    • Structures
    • Unions
    • Enumeration

    Output Functions in C

    参考资料

    C 编程语言提供以下内置输出功能...

    • 1.printf()
    • 2.putchar()
    • 3.puts()
    • 4.fprintf()

    printf() function

    #include <stdio.h>
    int main()
    {
        int i = 10;
        float x = 5.5;
        printf("%d %f
    ", i, x);
        return 0;
    }
    
    #include <stdio.h>
    int main(){
       int i = 10;
       float x = 5.5;
       printf("Integer value = %d, float value = %f
    ",i, x);
       return 0;
    }
    

    /* C 编程语言中的每个函数都必须具有返回值。printf()函数也有整数作为返回值。
    printf()函数返回一个与其打印的字符总数相等的整数值。 */
    #include <stdio.h>
    int main(){
       int i;
       i = printf("btechsmartclass");
       printf(" is %d number of characters.
    ",i);  
    }
    
    #include <stdio.h>
    int main()
    {
        printf("Welcome to
    ");
        printf("btechsmartclass
    ");
        printf("the perfect website for learning
    ");
        return 0;
    }
    

    putchar() function

    putchar()函数用于在输出屏幕上显示单个字符。putchar()函数打印作为参数传递给它的字符,并返回与返回值相同的字符。此功能仅用于打印单个字符。要打印多个字符,我们需要多次写入或使用循环语句。

    #include <stdio.h>
    int main(){
        char ch = 'A';
        putchar(ch);
        putchar('
    ');
    }
    

    puts() function

    puts()函数用于在输出屏幕上显示字符串。puts()函数打印字符串或字符序列,直到换行符。

    #include <stdio.h>
    int main(){
        char name[30];
        printf("
    Enter your favourite website: "); 
        gets(name);
        puts(name);
    }
    

    C 语言中的常数

    参考资料

    在 C 编程语言中,常量类似于变量,但常量在程序执行期间仅保存一个值。这意味着,一旦将值赋值给常量,则在程序执行期间不能更改该值。将值分配给常量后,它将在整个程序中得到修复。常数可以定义如下...

    常量是一个命名的内存位置,它在整个程序执行过程中只保存一个值。

    In C programmig language, constant can be of any datatype like integer, floating point, character, string and double etc.

    • 整数常量
    例子:
    125 -----> 十进制整数常量
    O76 -----> 八进制整数常量
    OX3A -----> 十六进制十进制整数常量
    50u -----> 无符号整数常量
    30l -----> 长整数常数
    100ul -----> 无符号长整数常量
    
    • 浮点常数

    浮点常量必须包含整数和小数部分。有时它也可能包含指数部分。当浮点常量以指数形式表示时,该值必须以“e”或“E”为后缀。

    例:浮点值 3.14 以指数形式表示为 3E-14。
    
    • 字符常量

    字符常量是用单引号括起来的符号。字符常量的最大长度为一个字符。

    例:'A' '2' '+'
    
    • 字符串常量

    字符串常量是用双引号括起来的字符,数字,特殊符号和转义序列的集合。

    我们在一行中定义字符串常量如下:“这是 btechsmartclass”
    

    在 C 中创建常量

    在 C 编程语言中,可以使用两个概念创建常量...

    • 1.使用 'const' 关键字
    • 2.使用 '#define' 预处理器

    1.使用 'const' 关键字
    我们使用 'const' 关键字创建任何数据类型的常量。要创建常量,我们在变量声明前加上 'const' 关键字。

    使用 'const' 关键字创建常量的一般语法如下... const 数据类型 constantName; 要么 const 数据类型 constantName = value; 例:const int x = 10; 这里,'x' 是一个固定值为 10 的整数常数。
    • 示例程序
    #include <stdio.h>
    void main(){
    
       int i = 9 ;
       const int x = 10 ;
          
       i = 15 ;
       x = 100 ; // creates an error
       printf("i = %d
    x = %d", i, x ) ;
    }
    

    上面的程序给出了一个错误,因为我们试图改变常量变量值(x = 100)。

    2.使用 '#define' 预处理器
    我们还可以使用 '#define' 预处理程序指令创建常量。当我们使用这个预处理器指令创建常量时,它必须在程序的开头定义(因为所有预处理器指令必须在 gloabal 声明之前写入)。
    我们使用以下语法使用 '#define' 预处理程序指令创建常量...

    #define CONSTANTNAME value
    例 #define PI 3.14
    这里,PI 是一个值为 3.14 的常量
    
    • 示例程序
    #include <stdio.h>
    #defien  PI  3.14
    void main(){
       int r, area ;
       
       printf("Please enter the radius of circle : ") ;
       scanf("%d", &r) ;
       
       area = PI * (r * r) ;
       
       printf("Area of the circle = %d", area) ;
    }
    

    自增与自减运算符

    自增运算符为“++”,其功能是使变量的值自增 1;
    自减运算符为“--”,其功能是使变量值自减 1。
    它们经常使用在循环中,自增自减运算符有以下几种形式:

    • Question 1
    #include <stdio.h>
    int main() {
        int i = 3;
        int a = i ++; // a = 3, i = 4
        printf("a = %d, i = %d
    ", a, i);
        int b = ++ a; // b = 4, a = 4
        printf("a = %d, b = %d
    ", a, b);
        return 0;
    }
    
    • Question 2
    #include <stdio.h>
    int main() {
        int a = 10;   // a 被赋值为 10
        int b = ++ a; // b 值为 11,因为 a 是预先递增的(现在 a = 11 且 b = 11)
        int c = a ++; // c 值是 11,a 值是 12
        printf("a = %d, b = %d, c = %d
    ", a, b, c); // a = 12, b = 11, c = 11
        return 0;
    }
    
    • Question 3
    #include <stdio.h>
    #include <conio.h>
    int main() {
        int x, a, b, c;
        a = 2;
        b = 4;
        c = 5;
        x = a -- + b ++ - ++ c ;
        printf("x = %d
    ", x); // x = 0
        printf("a = %d,b = %d,c = %d
    ", a, b, c); // a = 1,b = 5,c = 6
        getch();
        return 0;
    }
    
    • Question 4
    #include <stdio.h>
    #include <conio.h>
    int main() {
        int a, b, c, d;
        a = 2, c = 2;
        b = a++*++a;
        d = ++c * c++;
        printf("a = %d, b = %d
    ", a, b);
        printf("c = %d, d = %d
    ", c, d);
        getch();
        return 0;
    }
    /*
    gcc 5 result
    a = 4, b = 9
    c = 4, d = 9
    */
    
    • Question 5
    /*
    添加 3 个变量可以分解为 2 个步骤。
    temp = ++ a + ++ a;
    b = temp + ++ a;
    第一个++ a 使值为 6,第二个++ a 使它成为 7。因为 temp 中使用的两个变量都指向 a,temp = 7 + 7 = 14。
    下一步很简单,b = temp + 8,这使得 b = 22。
    */
    #include <stdio.h>
    #include <conio.h>
    int main() {
        int a = 5, b;
        b = ++a + ++a + ++a;
        printf("a = %d,b = %d", a, b); // a = 8,b = 22
        getch();
        return 0;
    }
    
    • Question 6

    面试官最喜欢的技术面试问题之一:

    int a = 1;
    int b = 2;
    int c == a +++ b;
    

    它编译吗?如果没有,需要改变什么。运行后 a,b,c 的值为多少?

    #include <stdio.h>
    #include <conio.h>
    int main() {
        int a = 1; 
        int b = 2; 
        int c = a +++ b; 
        printf("a = %d,b = %d,c = %d
    ", a, b, c); // a = 2,b = 2,c = 3
        getch();
        return 0;
    }
    
    注意:无论是 a++还是++a 都等同于 a=a+1,在表达式执行完毕后 a 的值都自增了 1,无论是 a--还是--a 都等同于 a=a-1,在表达式执行完毕后 a 的值都自减少 1。

    C 语言运算符优先级

    运算符优先级确定表达式的执行顺序,并决定如何计算表达式。某些运算符的优先级高于其他运算符; 例如,乘法运算符的优先级高于加法运算符。 例如,x = 7 + 3 * 2; 这里,x 被赋值为 13,而不是 20,因为 operator * 的优先级高于 +,所以它首先乘以 3 * 2 然后加到 7 中。 此处,具有最高优先级的运算符显示在表的顶部,具有最低优先级的运算符显示在底部。在表达式中,将首先执行更高优先级的运算符。
    ![](https://images2018.cnblogs.com/blog/1306719/201809/1306719-20180902004005575-552017983.png)
  • 相关阅读:
    我的CISSP备考之路
    【CISSP备考笔记】第8章:软件开发安全
    【CISSP备考笔记】第7章:安全运营
    【CISSP备考笔记】第6章:安全评估与测试
    【CISSP备考笔记】第5章 身份与访问管理
    【CISSP备考笔记】第4章:通信与网络安全
    【CISSP备考笔记】第3章:安全工程
    【CISSP备考笔记】第2章:资产安全
    【CISSP备考笔记】第1章:安全与风险管理
    PHP后门隐藏技巧
  • 原文地址:https://www.cnblogs.com/hgnulb/p/9568156.html
Copyright © 2011-2022 走看看