C语言字符指针输出与长度计算详解

Aria
Aria
发布时间:2026-10-15| 6人浏览过
原创

在C语言中,字符指针常被用于处理字符串。本文深入解析为何使用%s格式符打印字符指针会显示文本内容,厘清指针变量地址、解引用内容与取址的区别,并提供一种无需标准库函数即可计算指向字符串长度的通用方法。

C语言字符指针的输出机制

C语言内部没有专门的字符串类型,字符串通常通过字符数组或字符指针来表示。当定义 char * p = "hello"; 时,系统会在内存(通常是只读数据段)分配空间存储字符串 "hello",并将该区域首地址赋值给指针变量 p。

很多初学者会疑惑:既然 p 是指针,本质上是一个地址值,为什么执行 printf("%s", p); 输出的是 hello 而不是内存地址?

原因分析:

  1. 结束标志: C语言编译器会自动在字符串末尾添加空字符 '\0' 作为结束标记。
    格式化参数: %s 告诉 printf 函数,传入的参数是一个字符序列的起始地址。函数会从该地址开始逐个读取字符,直到遇到 '\0' 为止并停止输出。
  2. 其他输出方式:
    • 若使用 %p 或 "地址:%d" 等格式,将直接打印指针存放的地址数值。
    • 若使用解引用操作 *p,仅获取并输出指针当前指向的首个字符。

核心概念辨析:p、*p 与 &p

  • p (指针变量本身): 存储的是字符串第一个元素(如 'h')所在的内存地址。初始化后,其持有的地址值固定不变。
  • *p (解引用): 表示访问该地址处的具体值,即取出字符串的第一个字符 'h'。
  • &p (取指针地址): 指获取指针变量 p 自己在栈内存或其他存储空间中的存放地址,该地址与 p 的值(即字符串首地址)截然不同。

通过指针手动计算字符串长度

在实际开发中,有时需要不依赖 <string.h> 中的 strlen 函数来计算长度。利用指针算术运算,可以通过移动“头尾”两个指针来统计有效字符数。

int stren(char* str){
	char* start=str;
	char* end=str;
	while(*end!='\0'){
		end++;
	}
	return end-start;
}
#include<stdio.h>
int main(){
	char arr[]="bit";
	int len=stren(arr);
	printf("%d\n",len);
return 0;
}

逻辑说明:

上述代码维护了两个指针。首先让 start 和 end 同时指向字符串头部。随后循环递增 end 指针,直至它指向结束符 '\0'。此时,end - start 的结果即为跨越的非空字符个数,也就是字符串的实际长度。

以上就是关于C语言字符指针输出表现与长度计算的详细内容,更多关于C指针进阶的资料请关注本站其它相关文章!
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。