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

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

相关文章

  • 如何使用arm-none-eabi-gcc编译器搭建STM32的Vscode开发环境

    如何使用arm-none-eabi-gcc编译器搭建STM32的Vscode开发环境

    这篇文章主要介绍了使用arm-none-eabi-gcc编译器搭建STM32的Vscode开发环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 如何配置 Sublime Text4为 C++ 编辑器

    如何配置 Sublime Text4为 C++ 编辑器

    这篇文章主要介绍了配置Sublime Text4为C++编辑器,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • C语言中main函数与命令行参数详细讲解

    C语言中main函数与命令行参数详细讲解

    这篇文章主要为大家详细介绍了C语言main()函数与命令行参数问题,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-04-04
  • C++成员解除引用运算符的示例详解

    C++成员解除引用运算符的示例详解

    这篇文章主要介绍了C++成员解除引用运算符,本例子在编译期间给指针赋值,在更为复杂的类中,可以使用指向数据成员和方法的成员指针,需要的朋友可以参考下
    2022-01-01
  • 简单分析C语言中指针数组与数组指针的区别

    简单分析C语言中指针数组与数组指针的区别

    这篇文章主要介绍了C语言中指针数组与数组指针的区别,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • C++中的friend友元函数详细解析

    C++中的friend友元函数详细解析

    友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。友元函数的特点是能够访问类中的私有成员的非成员函数。友元函数从语法上看,它与普通函数一样,即在定义上和调用上与普通函数一样
    2013-09-09
  • C++中vector的模拟实现实例详解

    C++中vector的模拟实现实例详解

    vector是表示可变大小数组的序列容器,它也采用连续存储空间来存储元素,因此可以采用下标对vector的元素进行访问,这篇文章主要给大家介绍了关于C++中vector模拟实现的相关资料,需要的朋友可以参考下
    2021-11-11
  • C数据结构之双链表详细示例分析

    C数据结构之双链表详细示例分析

    以下是对c语言中的双链表进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • C++如何动态的生成对象详解

    C++如何动态的生成对象详解

    C++是不支持根据类名动态地生成对象的,比如从一个文本文件中读取类名然后构造一个对象.主要原因是没有丰富的动态元信息,没有单根类库。那么下面这篇文章就来给大家介绍C++是如何动态的生成对象,有需要的朋友们可以参考借鉴。
    2017-02-02
  • C语言程序环境和预处理详解分析

    C语言程序环境和预处理详解分析

    大家有没有想过,在vs2019的编译器上只要按下Ctrl+F5,一个test.c的源程序就能变成一个.exe的可执行程序,这其中是如何通过编译产生的呢,本章就和大家一起把其中的知识和重点的预处理一起学习一下
    2022-03-03

最新评论