IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言基础知识汇总 -> 正文阅读

[C++知识库]C语言基础知识汇总


1、函数指针 与 指针函数

  • 函数指针:是一个指针,函数是修饰,这是一个指向函数的指针
  • 指针函数:是一个函数,指针是修饰,返回值是指针的函数

1.1 指针函数

就这种,返回值为指针的函数。?????????????????????

char * fun(int a)

1.2 函数指针

指向函数的指针


  • 普通类型
/*
 * @Author: Mr.Dragon
 * @Date: 2021-09-20 18:32:35
 * @LastEditTime: 2021-09-20 18:43:17
 * @LastEditors: Mr.Dragon
 * @Description: Fall_down:所念皆星河
 */

#include "stdio.h"

int MAX(int a,int b)
{
    return a>b?a:b;
}

int main(void)
{
    int (*p)(int,int);
    p = MAX;

    printf("%d",(*p)(5,2));

    return 0;
}

  • typedef类型
/*
 * @Author: Mr.Dragon
 * @Date: 2021-09-20 18:32:35
 * @LastEditTime: 2021-09-20 19:09:31
 * @LastEditors: Mr.Dragon
 * @Description: Fall_down:所念皆星河
 */

#include "stdio.h"

typedef int (*Fun)(int,int);

int MAX(int a,int b)
{
    return a>b?a:b;
}
int MIN(int a,int b)
{
    return a>b?b:a;
}

int main(void)
{
    Fun CompareFun;

    CompareFun = MAX;
    printf("MAX:%d\n",(*CompareFun)(5,2));

    CompareFun = MIN;
    printf("MIN:%d\n",(*CompareFun)(5,2));

    return 0;
}

2、指针数组 与 数组指针

  • 指针数组:是一个数组,指针是修饰,数组元素为指针类型
  • 数组指针:是一个指针,数组是修饰,指向数组的指针

2.1 指针数组

/*
 * @Author: Mr.Dragon
 * @Date: 2021-09-20 19:14:54
 * @LastEditTime: 2021-09-20 19:17:11
 * @LastEditors: Mr.Dragon
 * @Description: Fall_down:所念皆星河
 */

#include "stdio.h"

char * StrBuff[]={
    "a",
    "b",
    "c",
};

int main(void)
{
    for (size_t i = 0; i < sizeof(StrBuff)/sizeof(StrBuff[0]); i++)
    {
        printf("%s\n",*( StrBuff + i));
        /* code */
    }
    return 0;
}

2.2 数组指针

/*
 * @Author: Mr.Dragon
 * @Date: 2021-09-20 19:19:55
 * @LastEditTime: 2021-09-20 19:35:15
 * @LastEditors: Mr.Dragon
 * @Description: Fall_down:所念皆星河
 */
#include "stdio.h"

int main()
{
    /**
     * @description: 用数组指针遍历数组
     * @param {*}  二维数组名特点:1、加一移动一行 2、地址常量(行地址)
     */
    int a[3][2] = {{1,2},{3,4},{5,6}};
    int (*p)[2];
    static int i,j

    p = a;
    printf("%p %p\n",a,a+1);   //移动一行  a和p相同
    printf("%p %p\n",p,p+1);   //移动一行 
    printf("%d %d %d %d\n",a[1][1],p[1][1],*(*(a+1)+1),*(*(p+1)+1));
    printf("%d %d\n",*(*a),*(*a+1));

    for ( i = 0; i < 3; i++)
    {
        for ( j = 0; j < 2; j++)
        {
            printf("%d %d %d %d | ",a[i][j],p[i][j],*(*(p+i)+j),*(*(a+i)+j));
            /* code */
        }
        /* code */
    }
}

3、大小端模式

  • 小端模式低字节在低地址,高字节在高地址
  • 大端模式:高字节在低地址,低字节在高地址

在这里插入图片描述

3.1 确定大小端模式(联合体(共用体))

#include "stdio.h"

union mode
{
    int num;
    char i;
    /* data */
};

char DetermineEnd(void)
{
    union mode sue;
    sue.num = 1;
    return sue.i;
}

int main(void)
{
    if (DetermineEnd() == 1)
    {
        printf("小端模式");
        /* code */
    }
    else
    {
        printf("大端模式");
    }
    return 0;
}

联合体有一个特性就是所有成员共用一块内存,所以在这段代码中定义了一个联合体,定义了两个成员,一个是int型(4Byte),一个是char型(1Byte),正因为联合体所有成员共用一块内存,所有成员起始地址相同,所以给int型变量赋值1,当测试的机器是小端模式,那么低字节在低地址,那么1就在起始位置(联合体的起始,也就是所有成员的起始位置),当测试的机器是大端模式,那么低字节在高位,也就是1在高位。

在这里插入图片描述

4、堆栈生长方向

一般说堆栈,特指栈。

堆栈的生长方向从最本质的理解是堆栈入栈方向是从高地址向低地址增长还是低地址向高地址增长

  • 向上增长(正向增长、向上生长):低地址 向 高地址生长
  • 向下增长(逆向增长、向下生长):高地址 向 低地址生长

在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-22 14:29:00  更:2021-09-22 14:31:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 21:03:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码