Eastsheng's Wiki

C&C++笔记-02

2022-04-03 18:11:28

[toc]

函数

  • C 源程序必须有且只有一个主函数main();

  • 程序一定是从主函数开始,最后在主函数中结束整个程序的运行;

  • 一个源文件由一个或多个函数组成;

  • 除去主函数之外,所有函数都是平行且互相独立的,即在一个函数内只能调用其他函数,不能再定义一个函数;

  • 一个函数可以调用其他函数或其本身,但任何函数均不可调用主函数.

  • 声明一个函数:

    1
    2
    3
    4
    int function(int,char); 
    //int:声明一个整数型函数,其返回值是一个整数
    //函数有两个形参,整数值变量在前,字符值变量在后
    //函数声明时,只需要说明形参的类型和个数,不必写变量名
  • 调用函数:

    1
    2
    3
    4
    5
    6
    function(10,'A');
    //程序调用函数时,代入函数参数表的参数值称为实际参数
    /*等效于:
    int i_p=10; //整数10 赋给被调函数的第1 个形参
    char ch_a='A'; //字母A 赋给被调函数的第2 个形参*/

  • for example:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #include<iostream>
    using namespace std;
    int readnum();//声明一个整数型函数,无参数
    void sqrnum(int);//声明一个无返回值的函数,形参是一个整数变量

    int main(void)
    {
    int t;
    while (t = readnum())//调用函数
    sqrnum(t);//调用函数
    return(0);
    }

    int readnum()//定义函数
    {
    int t;
    cout << "input a num:\n";
    cin >> t;
    return(t);//return 返回变量的类型必须与函数类型相符
    }

    //如果函数无需返回,则函数定义时应说明为“void”,意指空类型
    void sqrnum(int num)//定义函数
    {
    cout << "sqr(" << num << ")=" << num * num << "\n";
    }

变量类型强制转换

1
2
3
//(类型说明符)(表达式);
(float)a //把a 转换为实型变量
(int)(x+y) //把x+y的结果转换为整型
  • 它不改变在数据说明时对该变量定义的类型!(临时性转换)

指针

  • 1)指针是变量,存储着它所指向的变量的地址;

  • 2)既然指针变量需要存储空间,那么它必定需要声明。

  • 例如:

    1
    2
    3
    4
    5
    6
    int i_a,i_b;//整数变量
    int *i_p;//整数型指针
    i_p=&i_a;//把i_a的地址赋值给指针i_p
    *i_p=10;//把10赋值给i_a
    i_p=&i_b;//把i_b的地址赋值给指针i_p
    *i_p=2;//把20赋值给i_b
  • 指针是一个地址变量,可以存储某个变量的内存地址,通过获取该变量的地址,让指针指向该变量,从而可以访问(读写)该变量的值。

  • 让指针取得一个数组的地址:

    1
    2
    int array[N],*i_p;
    i_p=array; //array即是数组的地址,与上述的&i_b相似
  • 指针变量加上或减去一个整数i的意义是把指针指向的当前位置(指向某数组元素)向前或向后跨过i个位置。

    1
    2
    3
    4
    5
    6
    i_p+=i;
    i_p-=i;
    i_p++;
    ++i_p;
    i_p--;
    --i_p;
  • 指针变量的加减运算只能对数组指针变量进行,对指向其他类型变量的指针变量做加减运算是毫无意义的。

  • 并且,由于数组中元素类型不同(int/char/float),指针每加1,表示向后移动1个元素位置,表示指针变量指向下一个数据元素的首
    地址,而不是简单的指针变量+1;

  • 例如:

  • 注意:

  • 不要使用没有赋值的指针。

  • 指针也是变量,它的值(存储内容)是其指向的对象(或数据变量、常量和函数)的地址。

  • 指针可以指向内存中的万物,但我们未必能操作万物

  • 指针类型: