用数组实现的字符串和用指针实现的字符串
用数组实现的字符串和用指针实现的字符串。
1、
#include <stdio.h> int main(void) { char str[] = "abc"; //数组实现的字符串,str为数组名,为指向数组起始元素的指针,相当于“a”的指针。 char *ptr = "123"; //指针实现的字符串,ptr为指针,表示指向字符串字面量“123”首个字符的指针,即“1"的指针。 printf("str: %s\n", str); printf("ptr: %s\n", ptr); return 0; }
001、使用指针实现的字符串比使用数组实现的字符串占用更多的内存空间,因为指针创建的字符串除了字符串字面量占据内存空间外,指针也要占据内存空间。
002、数组名表示数组起始元素的指针,使用指针创建的字符串,指针变量也表示首个字符的指针,因此行为和数组本身一样,可以依据访问每一个字符。
2、用数组实现的字符串和用指针实现的字符串的不同点。
#include <stdio.h> int main(void) { char str[] = "abc"; //用数组实现的字符串 printf("str = %s\n", str); str = "edf"; //此处编译错误,因为不能使用赋值运算符对数组进行修改,str为数组名。虽然str表示一个元素的指针,也不能修改。 printf("str = %s\n", str); return 0; }
#include <stdio.h> int main(void) { char *ptr = "abc"; //用指针实现的字符串 printf("ptr = %s\n", ptr); ptr = "def"; // 此处不会编译失败,说明使用指针实现的字符串,指针ptr可以修改为指向其他字符的指针。 printf("ptr = %s\n", ptr); return 0; }
可以为指向字符串字面量(中的字符)的指针赋上指向别的字符串字面量(中的字符)的指针。 赋值后,指针指向新的字符串字面量(中的字符)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律