设为首页 加入收藏

TOP

C++笔记--函数、预处理(一)
2023-07-23 13:36:53 】 浏览:66
Tags:笔记 函数

1 函数

1.1函数的介绍

1.1.1 函数的概述

函数是c语言的功能单位。实现一个功能可以封装一个函数来实现。

定义函数的时候一切以功能为目的,根据功能去定函数的参数和返回值需要传哪些数据给函数?(实参)、函数的功能代码(函数体)如何实现?函数需要返回什么类型的数据?考虑(传入参数、函数体、返回值类型)

1.1.2 函数的分类 (定义角度)

库函数((c++语言库)、自定义函数、系统调用(内核提供给用户的函数接口)

1.1.3 函数的分类 (有无参数)

无参的函数:不能将函数外部的数据传递给函数内部

有参的函数:通过参数将函数外部的数据传递到函数内部

(参数:函数外部数据到函数内部的桥梁)

1.2 函数的定义、声明、调用

1.2.1 函数的定义

 

 

实现函数体,确定函数名,函数的形参、函数的返回值类型

1.2.2 函数声明

函数声明:告知编译器 该函数的函数名是啥 有几个形参 返回值类型是啥

1.2.3 函数的调用

执行函数体,一般调用格式:函数名(实参);

 

 

 

1.4 函数的传参

1.4.1 普通变量作为函数的参数

函数内部 需要使用外部变量的值 需要将外部变量的值传递给函数内部。这时普通变量就要作为函数的形参(单向传递之值传递)

1.4.2 数组作为函数的参数

1 数值数组作为函数的参数 函数内部可以(读写)外部数据的元素。

using namespace std;
void
inputIntArray(int arr[],int n); void sortIntArray(int arr[],int n); void printIntArray( int arr[],int n); void main() { int arr[5] = {0}; int n = sizeof(arr)/sizeof(arr[0]); //获取键盘输入 inputIntArray(arr,n); //对数组排序 sortIntArray(arr,n); //对数组遍历 printIntArray(arr,n); } void printIntArray(int arr[], int n) { int i=0; for(i=0;i<n;i++) { cout<<arr[i]<<" "; } cout<<endl; } void inputIntArray(int arr[], int n) { cout<<"请输入"<<n<<"个int型数据:"; int i = 0; for(i=0;i<n;i++) { cin>>arr[i]; } return; } void sortIntArray(int arr[],int n) { int i =0; for(i=0;i<n-1;i++) { int j=0; for(j=0;j<n-i-1;j++) { if(arr[j]>arr[j+1]) { int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } } }

2 字符数组作为函数的参数

int myStrlen(char str[]);
void myGetString(char str[],int n);
void main()
{
    char str[128] = "0";

    //键盘获取字符串
    myGetString(str,sizeof(str));

    //获取字符串的长度
    cout<<"长度:"<<myStrlen(str)<<endl;
}
int myStrlen(char str[])
{
    int i=0;
    while(str[i] !='\0')
        i++;
    return i;
}
void myGetString(char str[],int n)
{
    cout<<"请输入一个字符串:";
    cin.getline(str,n);
}
 

2 预处理

2.1 内存分区

进程:可执行文件从运行到结束整个动态的过程就叫进程。(占内存空间)

在32位平台每一个进程占4G空间(虚拟空间)

 

 

 

2.2变量的存储

2.2.1 普通局部变量

定义形式:{}里面定义的普通变量叫普通局部变量

 

 

 存储区域:栈区

1、普通局部变量不初始化内容不确定

2、普通局部变量同名就近原则(尽量别同名)

2.2.2 普通全局变量

定义形式:在函数外定义的普通变量

 

 

 作用范围:当前源文件以及其他源文件都有效。

  生命周期:整个进程。

  存储区域:全局区

1、全局变量不初始化内容为0

2、全局变量和局部变量同名优先选择局部变量。

3、其他源文件使用全局变量必须对全局变量进行extern声明。

2.2.3  静态局部变量

定义形式:在{}加static定义的局部变量就叫静态局部变量

 

 

 作用范围:所在的复合语句之间有效

 生命周期:整个进程有效

存储区域:全局区(全局区存储特点:整个进程有效,内容不初始化为0

静态局部变量整个进程都存在(第一次定义有效)

2.2.4  静态全局变量

定义形式:在函数外加static修饰定义的变量就是静态全局变量

2.3 全局函数和静态函数

 

 

 作用范围:只能在当前源文件使用

存储区域:全局区

2.3.1 全局函数(函数默认都为全局函数)

全局函数:在当前源文件以及其他源文件都可以使用,

如果其他源文件使用需要extern对全局函数进行声明

2.3.2 静态函数(加static修饰的函数)

 

 

 

2.4 头文件包含

头文件包含:在预处理结果将头文件的内容原封不动的包含在目的文件中

#include <head.h>  建议<>包含系统头文件

<> 从系统指定目录寻找head.h头文件

#include "head.h"  建议""包含自定义头文件

""先从当前目录寻找head.h头文件  如果找不到  再到系统指定的目录下寻找

2.5 #define 宏

编译四阶段:预处理、编译、汇编、链接

使用关键字 define定义 叫宏 宏尽量大写和普通变量区分开

#define PI 3.14 (宏定义)

在预处理结果 使用3.14替换所有出现PI的位置(宏展开

2.5.1 不带参数的宏

 

 

 宏的作用范围:是从定义处开始 到当前文件结束都有效

#undef可以结束宏的作用域

宏 没有作用域的限制,只在当前源文件 有效

2.5.2 带参数的宏(宏函数)

 

 

 1、宏的参数不能有类型

&

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++笔记--控制语句 下一篇vs2022 配置使用libcurl

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目