C++ 函数、指针数组、数组指针、结构体、共用体、动态库静态库

2024-04-20 19:48

本文主要是介绍C++ 函数、指针数组、数组指针、结构体、共用体、动态库静态库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

函数

在这里插入图片描述

在这里插入图片描述

一、函数要写在main函数下面,或者include头文件
二、头文件 类似java的接口 不参与编译
三、指针函数是返回值是指针
在这里插入图片描述
在这里插入图片描述
四、函数指针 类似声明变量
在这里插入图片描述

#include <iostream>
#include "fun.h"//函数指针 无参
void (*func)(); //类似声明变量
void funC() {printf("函数指针\n");
}
//函数指针 有参
void (*funcp)(int *a, int *b);
void funCp(int *a, int *b) {printf("函数指针\n");*a = 100; //因为是指针,也就是地址,所以可以直接修改a的值
}int main(int argc, const char * argv[]) {// insert code here...std::cout << "Hello, World!\n";int a = 5;int b = 10;fun();fun(&a, 1);addFun(&a);//函数指针func = funC; //赋值并不会调用func(); //这才调用funcp = funCp;funCp(&a, &b);printf("a值 %d \n", a);return 0;
}int fun(void) {printf("函数\n");return -1;
}int fun(void* pathName, int a) {printf("函数重载\n");return -1;
}//指针函数  返回值是 指针
int* addFun(void* param) {printf("指针函数\n");int a = 10;int *b = &a;return b;
}

指针修改数组中的元素

//数组int arr[] = {100, 200, 300};for (int i = 0; i < 3; i++) {printf("数组 %d\n", arr[i]);}//指针 指向数组中的第一个元素 并修改int *p = &arr[0];*p = 400;printf("修改后的数组元素是 %d\n", arr[0]);//指针运算 修改第二个元素*(p+1) = 1;printf("修改后的数组元素是 %d\n", arr[1]);return 0;
数组 100
数组 200
数组 300
修改后的数组元素是 400
修改后的数组元素是 1

指针数组

在这里插入图片描述

 //数组指针int (*p2)[4];int arrTwo[3][4];p2 = arrTwo;//将二维数组的首地址给了p2  也就是arrTwo[0][0]p2++;//跨行

指针优先级
在这里插入图片描述

数组指针

在这里插入图片描述

指针数组 与 数组指针的区别?
在这里插入图片描述

结构体

在这里插入图片描述

//结构体
struct Student {int i;short j;
}s1,s2;int main(int argc, const char * argv[]) {
//结构体struct Student student;student.i = 10;student.j = 5;//结构体声明了变量的写法s1.i = 10;s2.j = 5;printf("结构体大小 对齐 %d\n", sizeof(student)); //int 4 short2 对齐后是8printf("结构体声明变量 %d\n", s1.i); //10printf("结构体声明变量 %d\n", s1.j); //0printf("结构体声明变量 %d\n", s2.i); //0printf("结构体声明变量 %d\n", s2.j); //5return 0;
}

内存对齐

在这里插入图片描述

结构体大小

在这里插入图片描述

结构体存储原则

在这里插入图片描述

对齐前后对比

在这里插入图片描述

共用体

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

//共有体
union MyStudent {int i;short j;
} data;int main(int argc, const char * argv[]) {//共有体union MyStudent myStudent;myStudent.i = 10;myStudent.j  = 5;printf("共有体 i 的内存地址 %d\n", &myStudent.i);//共有体 i 的内存地址 -272632632printf("共有体 j 的内存地址 %d\n", &myStudent.j);//共有体 j 的内存地址 -272632632printf("共用体 大小: %d\n", sizeof(myStudent));//共用体 大小: 4}

动态库 静态库

库的概念
在这里插入图片描述

在这里插入图片描述

动态库 好比是 .jar
静态库好比是 .arr

如何编译一个动态库
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这篇关于C++ 函数、指针数组、数组指针、结构体、共用体、动态库静态库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/921170

相关文章

C++中全局变量和局部变量的区别

《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window