C++:函数和指针

目录

函数

概述:

函数的定义:

语法:

函数的调用

值传递

函数的常见样式

函数的声明

作用:

函数的分文件编写

作用:

指针

指针的基本概念:

指针的定义和使用

指针所占空间

空指针

野指针

const

一、const是什么

二、const的作用

const修饰指针

指针和数组

指针和函数

数组、函数、指针


函数

 参考:http://t.csdn.cn/1MJEu

概述:

作用:将一段经常使用的代码封装起来,减少重复代码。

一个大的程序,一般会分为多个程序块,每个块实现特定的功能。

函数的定义:

函数的几个要素 返回值类型,函数名 ,参数,函数体语句,return表达式

语法:

返回值类型 函数名(参数列表)
{    
    函数语句;    
    return 表达式;
}

函数的调用

功能:使用定义好的函数

语法:函数名(参数)

值传递

  • 就是函数调用时将参数值传给形参

  • 值传递时,如果形参发生变化,并不会影响到实参

void Swap(int *num1, int *num2)
{
    int temp;
    temp = *num1;
    *num1 = *num2;
    *num2 = temp;
}

int main(void)
{
    int a = 20, b = 50;
    cout << "交换前a:" << a << " b:" << b << endl;
    Swap(&a, &b);
    cout << "交换后a:" << a << " b:" << b << endl;
    system("pause");
    return 0;
}

函数的常见样式

无参无返、有参无返、无参有返、有参有返

函数的声明

作用

告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。

函数的声明可以有很多次,定义只能有一次。

//声明
int max(int a,int b);
//定义
int max(int a ,int b)
{
    return a+b;
}

函数的分文件编写

作用:

让代码结构更加清晰

就是在.h的头文件里面放函数声明,函数的定义放到.c文件里

指针

参考:http://t.csdn.cn/salh6

指针的基本概念:

指针的作用:可以通过指针间接访问内存空间。

内存编号是从0开始记录,一般用十六进制数字表示。

可以利用指针变量保存地址。

指针的定义和使用

指针变量定义语法:数据类型+变量名;

指针所占空间

在32位操作系统下,无论什么类型的指针,都占4个字节的内存空间。

空指针

int *p = null;

空指针:指针变量指像内存编号中地址为0的空间

作用:初始化指针变量。

注意:空指针指向的内存空间是不可以访问的。

野指针

指针变量指向非法的内存空间。

const

一、const是什么

const是C/C++中的类型修饰符。

二、const的作用

1、对变量声明只读特性,保护变量值以防被修改。

2、节省空间,避免不必要的内存分配。const修饰的变量在程序运行过程中只有一份拷贝。

3、提高程序运行效率。编译器不为普通const常量分配存储空间,而是将他们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储和读取内存的操作。

const修饰指针

const修饰指针有3种情况:

const修饰指针:const int* p;

const修饰常量:int * const p;

const即修饰指针也修饰常量:const int * const p ;

const修饰的是指针,指针指向可以改,指针指向的值不可以改
    const int* p1 = &a;
ERR: *p = num1; //非法操作,修改指针指向的值
const修饰的是常量,指针指向不可以改,指针指向的值可以更改
    int* const p2 = &a;
const既修饰指针,又修饰常量,指针的指向和指针指向的值都不可以改变
    const int* const p = &a;

指针和数组

作用:利用指针访问数组元素。

int arr[] = {1,2,3,4};
int* p = arr;

指针和函数

作用:利用指针做函数形参,可以改变实参的值。

数组、函数、指针

test:封装一个函数,利用冒泡排序,实现对整型数组的升序排列

#include 
using namespace std;
//冒泡排序
void Bubble_Sort(int* a, int len)
{
    for (int i = 0; i < len - 1; i++)
    {
        for (int j = 0; j < len - i - 1; j++)
        {
            int temp = 0;
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
}


int main(void)
{
    int Array_1[] = { 9,11,123,55,324,324,66,677,12 };
    int len = sizeof(Array_1) / sizeof(Array_1[0]);
    cout << "排序前:";
    for (int i = 0; i < len; i++)
    {
        cout << Array_1[i] << " ";
    }cout << endl;
    Bubble_Sort(Array_1,len);
    cout << "排序后:";
    for (int i = 0; i < len; i++)
    {
        cout << Array_1[i] << " ";
    }cout << endl;

    system("pause");
    return 0;
}

你可能感兴趣的:(算法,c++,开发语言)