随笔 - 576  文章 - 0  评论 - 62  阅读 - 219万

char指针

1、在C语言中,没有字符串类型,因此使用char指针表示字符串。

2、那么问题来了,使用char* 表示字符串,到哪里是结尾呢?因此需要一个特殊的字符作为哨兵,类似迭代器中的end(),这个哨兵就是'\0',注意不是字符0.

3、对于文本字符串,编译器会自动添加\0。

4、对于字符数组的赋值,如果不使用文本字符串,需要用户在尾部添加字符\0。对于其他类型的数组,没有\0的概念。

5、对于char指针,C语言提供了一系列方法,如strlen,strcmp。这些方法有个特点,都是假定最后一个字符为\0。因此对于char指针,我们要保证最后一个字符是\0。

6、考虑sizeof,对于指针,取值为4。对于数组名,虽然数组名也可以认为是指针,但是sizeof(数组名) 取值是整个数组占用的内存,而不是4。思考为什么?

  int a[] = {1,3,5,7,}; 我怎么知道a中的元素个数。总不能让我数吧?

  我知道每个int占用内存,要想知道元素个数,我需要知道整个数组占用的内存。因此,我需要sizeof(a)返回整个数组占用的内存大小。

7、char指针指向文本字符串,可以认为char指针是指向const对象的指针;char数组名,可以认为是常量指针,不允许修改指向。

8、sizeof(char数组名) :返回整个数组占用多少个字节,包括\0。

  sizeof(char指针):返回4

9、strlen(char数组名) :字符元素个数,直到\0,不包括\0

  strlen(char指针):字符元素个数,直到\0,不包括\0

posted on   Andy Niu  阅读(3267)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示