Java对象的内存解析 引言:对象是java的一个核心,如果我们能够搞清楚这些对象在内存中是如何存放的,那我们对于java的理解会更加清晰和深刻我们通过一段代码来分析java对象的内存分配:public class PersonTest { public static void main(String[] args) { Person p1 = new Person(); p1.name = "Tom"; p1.isMale = true; System.out.println(p1.na.
C语言—动态内存分配相关知识详解 一.前言我们之前编程时创建的一些变量,你知道它们都是存放在内存的哪里吗?其实,不同的类型的变量在内存中存储的位置是不一样的。一起来看一下:那么为什么要有动态内存开辟这一说呢?有时候我们需要的空间大小在程序运行的时候才能知道,那数组在编译时开辟空间的方式就不能满足了,这时候就需要我们的动态内存分配了。动态内存开辟主要要求我们了解和掌握四个函数1.malloc2.calloc3.realloc4.free二.动态内存函数详解及其使用2.1 m...
C语言之结构体(后续)(位段+共用体+枚举) 接上一篇~~走起目录一.位段二.枚举三.共用体(联合体)正文开始一.位段什么是位段呢?位段,C语言允许在一个结构体中以位(二进制位)为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”或称“”位域“”。利用位段能够用较少的位数存储数据。(位段不具有跨平台性)位段的声明和结构体是类似的,但是有两个不太一样的地方1.位段的成员必须是int,unsigned int 或者signed int 类型。(同一个位段里的成员类型尽量保持一致)2.形.
C语言之结构体(内存对齐+位段+共用体+枚举) 我们之前学习过整型,字符型,浮点型....那么比如说我想要描述一个学生,这个学生有如下属性:学号,性别,选修课程。那我们该怎么声明这个类型呢?这时候就要用到我们自定义的类型——结构体目录一.结构体的基础知识1.1 结构体的声明 1.2 结构体的自引用1.3 结构体的重命名1.4 结构体变量的初始化二.结构体内存对齐2.1 内存对齐规则练习2.2 自定义对齐数2.3 offsetof函数三. 结构体传参...
C语言内存函数概述及其模拟实现(下) 一.memcpy函数打开c.plusplus.com看一下关于这个函数的基本使用方法使用方法:这个函数不仅仅可以拷贝整数,还可以是其他的类型呀~一起来看看接下来一起来模拟实现一下这个函数:函数参数原型:源码:#include<stdio.h>#include<string.h>#include<assert.h>struct S{ char name[20]; int age;...
C语言内存函数概述及其模拟实现(上) 一.strlen函数的实现strlen函数是用来计算字符串长度的打开cplusplus.com - The C++ Resources Network这里介绍三种模拟实现strlen函数的方法1.计数器方法int my_strlen(char *arr){ int count = 0; while(*arr = '\0') { arr++; count++; } retu..
链表的相关操作实现及其详解(含源码) 链表顺序表:一组地址连续的存储单元依次存储线性表的数据元素,通常称这种结构为顺序表。特点:逻辑上相邻的数据,其物理次序也是相邻的。线性表一般包括:基地址以及长度。二.顺序表的定义及其相关操作实现1.顺序表的定义代码实现:typedef int SLDataType; //统一修改,比如你想存放double,char等等。typedef struct SeqList{ SLDataType * a; int size; ..
指针笔试面试题讲解 读代码写出结果1. int a[4] = { 1, 2, 3, 4 }; int *ptr1 = ( int * )(&a + 1); int *ptr2 = (int *)((int)a + 1); printf("%x %x", ptr1[-1], *ptr2); 分析一下这串代码:在这里,我们分析清楚了ptr1 和ptr2指向的是哪里。接下来我们看看打印的这两个是什么样子的东西。看打印结果:2. char *...
(套娃篇下)C:奇妙的指针 回调函数机制+qsort函数排序(很强大)+qsort函数的模拟实现 一.qsort函数排序法引入:还记得我们之前学习的冒泡函数嘛?冒泡函数排序源代码://冒泡函数void Bubble_sort(int arr[], int sz){ int i = 0; int j = 0; for (i = 0; i < sz - 1; i++) { for (j = 0; j < sz - i - 1; j++) { if (arr[j] > arr[j + 1]) { int tmp = arr[j]