- 博客(20)
- 收藏
- 关注
原创 指针数组的使用情境
指针数组类型可存放的数据类型示例int 型变量地址arr[0] = #字符串地址(char*)任意类型指针(需类型转换)结构体 T 的实例地址函数地址(需匹配函数签名)关键点:指针数组的类型决定了其元素的指向类型,使用void*可实现泛型存储,但需谨慎管理类型转换。
2025-05-10 21:41:27
264
原创 fgets函数用法
fgets是 C 语言中用于从文件流中读取字符串的函数,gets(因为它可以限制读取的字符数量,避免缓冲区溢出)。:从指定的stream(如标准输入、文件)中读取最多n-1个字符,或直到遇到换行符\n或文件结束符EOF。保留换行符\n(如果读取到)。自动在字符串末尾添加终止符\0。读取失败或到文件末尾时返回NULL。strnn-1\0streamstdinfopen成功时返回str的指针。失败或到达文件末尾时返回NULL。
2025-05-10 16:44:21
229
原创 C语言基础语法之复杂数据类型(个人复习笔记)(结构体 联合体)
/注意:结构体类型既然是一种数据类型标识符,那么它同前面所介绍的简单数据类型一样,它本身是不需要占用内存单元的,只有用它来定义某个变量时,才会为该变量分配结构。//从结构体变量初始化的格式可以看出其初始化与一维数组相似,所不同的是如果成员本身又是结构体类型,则该成员的初始值必须为一个初值表。//存放和起作用的将是最后一次存入的成员值//对某个成员赋值也改变了其他成员的值//共享同一内存//联合体变量与各成员地址相同。//联合体类型的定义格式与结构体类型的定义格式基本相同,仅是关键字不同。
2025-04-20 19:49:04
374
原创 C语言基础语法之指针(个人复习笔记 )
/由于pcity[]为指针数组,所以pcity[i]也为地址,ptemp本身也是一个指针 字符串指针数组的名不变,完成指针指向地址的更改 ,不改变数据原来的存储位置。//其他类型数组只能逐个元素输出,不能用数组名一次性输出全部元素//此处数组名指的是字符指针 //但指针变量名是可改变的,数组名是不可改变的,二者之间有明显区别。a[i][j] *(a[i]+j) *(*(a+i)+j) (*(a+i))[j]//知道就行,一般不常用。
2025-04-20 16:47:24
367
原创 在C语言中,使用free函数释放动态分配的内存时,需遵循以下原则和注意事项
若函数返回动态分配的内存,需明确约定由调用者释放: char *create_string() { char *str = malloc(50);// 调用者需自行 free } // 调用方: char *s = create_string();// 使用 s... free(s);// 使用 buffer... free(buffer);// 使用 ptr... free(ptr);// 释放旧内存 ptr = malloc(200);// 使用 arr... free(arr);free(ptr);
2025-04-15 19:36:39
285
原创 双引号中什么也没有的““表示一个空字符串,其作用及是否可删去如下:
i++) { // 遇到空字符串时退出循环。在此代码中,它可能用于标记数组的结束,方便后续遍历时判断终止条件。结尾的惯例,空字符串可能用于适配某些需要显式结束符的库函数或代码逻辑。,循环可能越界访问无效内存,导致未定义行为(如崩溃或乱码)。替代空字符串作为结束符,以提升代码可读性和安全性。若需标记数组结束,更规范的写法是使用。若未依赖空字符串作为结束符,直接删除。
2025-04-15 15:50:07
288
原创 strcmp函数的用法详解
例如: strcmp("Apple", "apple");// 返回非零值('A' ASCII为65,'a'为97)// 返回负值('a' < 'b')if (strcmp(arr[i], arr[j]) > 0) { // 升序排序。if (strcmp(a, b) == 0) { /* 相等 */ }
2025-04-15 15:47:38
928
原创 strlen函数的使用场景及注意事项
提前终止计算,返回错误长度。应使用显式长度参数(如。可避免内存错误和逻辑漏洞,是编写健壮C程序的基础。是C语言中用于计算以空字符(
2025-04-15 11:23:37
952
原创 段错误原因及调试方法详解
当程序试图操作一块没有权限访问的内存区域(如只读内存、未分配的内存或已释放的内存)时,操作系统会强制终止程序并报错。为每个进程分配独立的内存空间,并设置访问权限(读、写、执行)。通过理解段错误的成因并借助调试工具,可以高效定位和修复此类问题。向只读区域(如代码段、字符串常量)写入数据。:如Clang静态分析器、Valgrind。是程序运行时的一种常见错误,通常是由于。访问未映射的物理地址(如NULL指针)。栈或堆内存越界访问(可能覆盖其他数据)。:确保指针指向有效内存。:释放内存后置指针为。
2025-04-04 10:47:49
344
原创 条件运算符(三元运算符)不建议嵌套使用的原因及核心用法、示例等
三元运算符能显著简化代码,但需权衡可读性与简洁性。在简单条件赋值或内联逻辑中表现优异,复杂场景下仍推荐。是一种简洁的条件控制语法,广泛用于简化。:确保两个返回值的类型一致或可隐式转换。:仅在逻辑简单时使用三元运算符。:用括号确保运算顺序清晰。:嵌套超过两层时改用。
2025-04-04 10:37:31
457
原创 ios::sync_with_stdio(0) ,cin.tie(0),cout.tie(0); 的用法及含义
在 C++ 标准库中,默认情况下 cin/cout 和 scanf/printf 之间是同步的,以确保它们能混合使用,不会导致输出顺序错乱。使用 ios::sync_with_stdio(false);ios::sync_with_stdio(false)(或者 ios::sync_with_stdio(0))是一种优化。取消 cin/cout 与 scanf/printf 的同步,提高 cin/cout 速度。解除 cin 与 cout 的绑定,避免不必要的 cout 刷新,提高 cin 速度。
2025-04-04 10:23:47
660
原创 getline(cin, s) 用法、特点以及与其他输入方式的对比
是一个常用的输入函数,用于从标准输入(键盘)读取整行字符串。的用法和注意事项,可以更高效地处理用户输入,避免常见陷阱。:适合读取包含空格的完整输入(如句子、文件路径)。如果输入流处于错误状态(如文件结束或类型不匹配),:读取整行内容(包括空格),丢弃末尾的换行符。:遇到空格、换行符或制表符时停止读取。会残留在输入流中,可能影响后续输入。交替使用时,残留的换行符会导致。读取一行字符,直到遇到换行符。:读取原始字节流,不处理换行符。,可用于链式操作或错误检查。:无法读取含空格的整行文本。,避免内存溢出问题。
2025-04-04 10:19:00
795
原创 C++中std::string 的结尾字符处理
结尾,但这是为实现细节服务(如兼容C风格字符串)。用户应通过类的接口操作字符串,无需关心结尾的空字符。可以包含中间的空字符(如通过构造函数指定长度或直接插入),此时。方法返回符合C风格的字符串。和成员函数操作字符串,而非直接访问底层数组的。类会自动管理内存和结尾的空字符。存储字符串时,其内部管理的字符数组。获取的字符串长度不包含结尾的。等)也基于这一长度操作。结尾的字符数组,长度为。反映实际字符数(含中间。仍会在整个数据末尾添加。
2025-03-29 22:38:46
280
原创 编程语言的范式分类与多范式支持
1. 严格面向过程的语言代表语言:C核心特点代码以函数为基本单元,数据(变量、结构体)与操作(函数)分离。无类、对象、继承等 OOP 特性。示例c// 数据与函数分离 struct Point { int x;int y;p->y += dy;局限封装性差:结构体字段默认公开,需通过约定(如命名)模拟私有性。复用性低:无继承,代码复用依赖函数组合或宏。2. 严格面向对象的语言代表语言:Java核心特点万物皆对象:所有代码必须写在类中(包括main函数)。
2025-03-29 21:52:36
918
原创 用户视角与面向对象区别和联系以及常见误解
void insert(int index, int value) { // 用户视角友好。:用户友好的接口设计可以在任何编程范式中实现(如 C 的函数、Python 的模块)。:设计良好的面向过程代码同样可以简洁易用(如 Linux 内核的 API)。:设计直观的接口(如 1-based 索引、语义化方法名)。,目的是隐藏底层实现细节,让使用者无需关心内部逻辑。即使使用 C(面向过程)也能实现用户友好的接口。:扩展或重写功能(如实现动态扩容的顺序表子类)。// 逻辑位置转下标:index-1。
2025-03-29 21:47:06
840
原创 cout<<的三种常见格式之间的区别
需要同一行输出➔ 用' '或'\n'(根据是否换行决定)。需要换行且实时输出➔ 用endl(但注意性能影响)。仅需换行但无需实时输出➔ 用'\n'(更高效)。
2025-03-29 09:54:06
188
原创 break continue 的区别
break和continue是编程中用于控制循环流程的两个关键字,它们的核心区别在于。break:直接终止当前循环,跳出整个循环体,继续执行循环之后的代码。:满足某个条件时,提前结束循环。完全退出循环(不再执行后续的循环迭代)如果循环嵌套多层,只退出当前层循环。
2025-03-29 08:57:57
1241
空空如也
jupyter学习过程出现的一个问题
2025-01-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人