关于c语言中输出字符指针的相关问题

 更新时间:2022年07月20日 14:09:11   作者:littesss  
这篇文章主要介绍了关于c语言中输出字符指针的相关问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

c语言输出字符指针问题

例如定义一个 char * p = "hello";的字符指针

首先搞清楚在c语言中没有字符串的类型,所以对字符串操作,有两种形式:可以用字符指针(为什么不叫字符串指针,我个人觉得,字符指针针对的是单个字符的操作,即指针操作,所以就叫它字符指针吧。。。)

或者字符串数组(这里不在讨论字符串相关问题,前面博客有讨论过)这里的指针变量p,系统会为其重新分配内存。

"talk is cheap , please show me your code"

说多无用,放码过来

有人会问,p不是指针变量吗?但是为什么printf("%s",p)他为什么打印的不是地址?

答:

是的p肯定是指针变量,它也一定是地址,但是别忘了在C语言中,系统都会默认在字符串末给我们加上\0用于结束字符串,所以用printf()输出时候,只要你打印格式是%s,系统知道我们要输出字符串,而且系统也可以确定字符串的长度,所以当你用%s打印字符指针p的时候就会输出字符串,如果你是以地址打印格式输出的话,系统就会给我们打印出地址, 如果你是解指针(*p),那么系统就取p指针指向的内容,此时看你自己以什么格式输出,就用什么格式打印。

注意:

在字符指针中p 、*p 和&p的区别:p是指针变量指向字符串首元素(前提对p指针没有进行指针操作),p中存放首元素的地址(一旦被初始化就,系统就为我们分配好了地址,而且地址也不能改变,因为字符指针是一个只读变量,你不能企图对一个初始化好的指针进行内部修改),而*p是对指针变量p进行解引用操作,也就是指针所指向的内容,而&p是对指针变量取地址,所以也就肯定不会和p的值相等,因为字符指针系统会为其分配内存,p的值是字符串首元素的地址。

c语言指针求字符串长度

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;
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vc获取计算机名和ip地址的方法

    vc获取计算机名和ip地址的方法

    这篇文章主要介绍了vc获取计算机名和ip地址的方法,涉及通过VC对系统相关信息操作技巧,需要的朋友可以参考下
    2015-05-05
  • C语言实现简单登录操作

    C语言实现简单登录操作

    这篇文章主要为大家详细介绍了C语言实现简单登录操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • C++浅析类与对象基础点

    C++浅析类与对象基础点

    类和对象是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型;变量就是可以变化的量,存储在内存中—个可以拥有在某个范围内的可变存储区域
    2022-07-07
  • C++ 折叠参数包详解(悄然增强编程效率)

    C++ 折叠参数包详解(悄然增强编程效率)

    折叠参数就是一个参数包, 代表是多个未知,tuple元组就是一个折叠参数的使用,这篇文章主要介绍了C++ 折叠参数包悄然增强编程效率,需要的朋友可以参考下
    2023-05-05
  • C语言中动态内存管理初学者容易犯的6个错误分享

    C语言中动态内存管理初学者容易犯的6个错误分享

    本篇文章主要介绍了初学者使用C语言中动态内存管理的4个函数时最容易犯的6个错误,以及如何避免这些错误,文中的示例代码讲解详细,感兴趣的可以了解一下
    2023-04-04
  • 基于Qt实现简单的计算器

    基于Qt实现简单的计算器

    这篇文章主要介绍了如何使用Qt框架实现一个简单的计算器应用,我们将使用C++编程语言和Qt的图形用户界面库来开发这个应用,并展示如何实现基本的算术操作,希望对大家有所帮助
    2023-11-11
  • C++临时性对象的生命周期详细解析

    C++临时性对象的生命周期详细解析

    临时性对象的被摧毁,应该是对完整表达式(full-expression)求值过程中的最后一个步骤。该完整表达式造成临时对象的产生
    2013-09-09
  • vscode使用cmake时将命令行参数传递给调试目标的方法

    vscode使用cmake时将命令行参数传递给调试目标的方法

    这篇文章主要介绍了vscode使用cmake时将命令行参数传递给调试目标,下面介绍了一个示例,将参数first_arg, second-arg和third arg传递给程序(此处需要注意,third arg中间虽然存在空格,但是仍然被视作一个参数),需要的朋友参考下吧
    2024-03-03
  • OpenCV画任意圆弧曲线

    OpenCV画任意圆弧曲线

    这篇文章主要为大家详细介绍了OpenCV画任意圆弧曲线,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • C/C++实现动态数组的示例详解

    C/C++实现动态数组的示例详解

    动态数组相比于静态数组具有更大的灵活性,因为其大小可以在运行时根据程序的需要动态地进行分配和调整,本文为大家介绍了C++实现动态数组的方法,需要的可以参考下
    2023-08-08

最新评论