自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 指针运算的本质

编译器会自动处理类型大小,所以我们只需要关心"第几个元素",而不需要手动计算字节偏移量。这就是C语言指针运算的便利之处!

2025-10-13 23:48:32 321

原创 . 和 -> 用于访问结构体

/ 定义结构体指针。// 等价于 strcpy((*p).name, "Bob")// 正确但需注意:arr 退化为指针,等价于 arr[0].id。// 正确:p 是指针,使用 ->// 等价于 (*p).id = 102。// 正确:s 是变量,使用 .// 正确:arr[0] 是结构体变量。// 定义结构体变量。

2025-05-22 17:23:31 799

原创 -> 和 [] 是两种操作符

在C语言中,->和[]->

2025-05-22 17:21:47 930

原创 Linux 内核链表设计的核心特性

的地址,结合结构体类型和链表成员名,计算出外层结构体的起始地址。成员在外层结构体中的偏移量,找到外层结构体的地址。// 访问 pos->value。,但可以通过 list_entry。// 遍历链表时获取外层结构体指针。在 Linux 内核链表实现中,这是内核链表设计的核心特性——:外层结构体中链表成员的名字。:链表本身不关心外层结构体。指针互相链接,形成链表。// 插入节点到链表头部。的地址,进而访问数据。

2025-05-22 17:15:53 323

原创 int类型指针和字符串类型指针的差别

特性int*char*(字符串指针)指向类型整型(int字符(char解引用结果整数值单个字符指针运算步长(1字节)终止符无以\0结尾输入/输出需格式化为%d可直接用%s处理字符串常量字面量无特殊语义可能指向只读内存理解这些区别能帮助避免常见的指针误用(如越界访问或类型不匹配)。

2025-04-21 15:47:11 597

原创 指针的指针解析步长

指针存储的是内存地址,其位数需匹配处理器的寻址能力(如32位系统使用4字节地址,64位系统使用8字节地址)‌。这种特性使得指针运算能够正确遍历指针数组或动态分配的二维数组。)在解析时的步长由其所指向的指针类型的大小决定。)时,地址增加的字节数等于其指向的指针类型的大小‌3。指针的步长仅取决于其直接指向的类型(如。指针的指针进行算术运算(如。),与最终指向的数据类型(如。

2025-04-21 14:30:34 380

原创 C/C++中&和*的区别详解,以及一些小问题

/ 参数声明为 struct uci_package* &pkg。printf("*ptr的值: %d\n", *ptr);// 使用*访问指针指向的值。// pkg是指向uci_package的指针。// 获取ptr指向的值(解引用)printf("ptr存储的地址: %p\n", ptr);int *ptr = # // 获取num的地址并赋给指针ptr。// 3. pkg的地址 (&pkg),让函数可以修改pkg的值。int *ptr = # // 声明ptr为指向int的指针。

2025-04-21 14:09:02 2455

原创 一个类可以直接调用另一个类的变量

场景能否直接调用访问方式其他类的公有类变量✅ 可以其他类的受保护类变量(⚠️ 可以但不推荐其他类的私有类变量(__❌ 不能(需通过方法)通过类方法间接访问其他类的公有实例变量✅ 可以(需实例)其他类的私有实例变量(__❌ 不能(需修饰名)

2025-04-10 10:30:43 655

原创 类变量和实例变量的区别

特性类变量实例变量定义位置类内部,方法外部方法内部(如__init__存储位置类对象 (实例对象 (访问方式类名或实例均可访问仅实例可访问修改影响影响所有实例仅影响当前实例内存占用共享一份,节省内存每个实例独立存储继承行为子类可继承或覆盖需显式调用父类__init__

2025-04-10 10:24:40 492

原创 super()和self.在类调用中的区别

则只调用当前类的版本,这通常是在子类方法中扩展或修改父类方法的行为时使用。在大多数情况下,为了保持代码的可维护性和可读性,在子类中调用父类的方法时,取决于你想要调用的方法的版本。如果你需要调用父类的方法,并且想要避免子类方法的覆盖,那么一定要使用。会确保调用的是父类的版本。这在多重继承中尤其重要,它可以避免方法被意外覆盖。将会调用子类中的版本,而不是父类中的版本。这段修改后的代码会导致无限循环,因为。即使子类也定义了同名的方法,调用的是父类(或超类)中定义的。如果子类重写了父类中的。

2025-04-09 15:58:53 250

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除