首页 > 其他分享 >c语言中输出字符指针相关问题

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

时间:2024-08-08 19:16:56浏览次数:18  
标签:字符 变量 输出 地址 字符串 指针

原文链接:https://blog.csdn.net/littesss/article/details/71037908

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的值是字符串首元素的地址。

 

标签:字符,变量,输出,地址,字符串,指针
From: https://www.cnblogs.com/y593216/p/18349563

相关文章

  • C数组和指针,从此不再困惑。
    目录一、思考下图中的问题?二、上图中问题答案,如下图:三、分析问题答案1、分析前知识准备1.0、内存区术语1.1、为什么定义数组类型变量时要指定大小或初始化1.2、指针指向的内存一定是在堆区吗?1.3、const关键字的思考1.4、进程虚拟地址空间1.5、为什么会段错误?2、开始......
  • 字符旋转的结果(c语言)
    1.字符旋转的结果//写一个函数,判断一个字符是否为另一个字符串旋转之后的字符串//是返回1,不是返回02.方法一:我们可以使用字符旋转,进行一一比较。如果相等是返回1,如果不是返回0,将第一位存储起来,其他位先前相加,然后将第一位放在最后一位,进行比较,如果没有相等,那在++进行比较.......
  • 19:Python字符串格式化
    #字符串格式化,用两种方法:百分号和format方式,百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存。#百分号(%)是一个运算符,用于进行字符串格式化、取模运算和格式化输出#百分号方式##%[(name)][flags][width].[precision]typecode##(name)......
  • Python 汉字区位码、字符串 相互转换
    Python汉字区位码、字符串相互转换区位码简介GB2312所有字符放在一张94x94的矩阵中,矩阵中的每个位置对应一个字符(有的位置是空的,没有字符)。区位码为十进制四位数,前后两位分别代表该字符在矩阵中的行、列坐标(均从1算起),如4528“图”字,为45行、28列上的字符。能通过对区位码进......
  • 【C语言】一篇文章搞定C语言最难指针
    目录一、内存和地址(1)什么是内存的地址(2)如何寻找指定的内存地址(3)CPU和内存传递数据的方式二、指针变量和地址(1)取地址操作符(2)指针变量(3)解引用操作符(4)指针变量的大小(5)指针变量的类型的意义 ①指针的解引用②指针+/-整数③void*指针三、const修饰指针(1)cons......
  • UnicodeEncodeError:“ascii”编解码器无法对位置 20 中的字符 u'\xa0' 进行编码:序号
    我在处理从不同网页(在不同站点上)获取的文本中的unicode字符时遇到问题。我正在使用BeautifulSoup。问题是错误并不总是可重现的;它有时适用于某些页面,有时,它会因抛出UnicodeEncodeError而呕吐。我已经尝试了几乎所有我能想到的方法,但我还没有找到任何可以一致工作......
  • C++ - 二级指针动态内存申请与释放
    C语言描述:#include"stdio.h"#include"stdlib.h"#include"assert.h"//二维数组内存申请int**createArray2D(introw,intclos){ int**pArray=(int**)malloc(sizeof(int*)*row); assert(pArray); for(inti=0;i<row;i++) { ......
  • python 无法解密重音字符(如 è),我该怎么办?
    我正在解决这个ctf,您必须使用PyCryptodome模块通过DES加密消息。消息是“Launghezzadiquestafrasenonèdivisibileper8”(意大利语)。我无法将此消息转换为字节,因为重音字符不包含在utf-8中(我认为这就是解释)。有人可以帮我加密消息吗?fromCrypto.Util.Paddingimp......
  • 零一万物完成数亿美元融资;OpenAI 引入 API 结构化输出功能
    ......
  • 循环字符串
    循环字符串题目描述给定长度为$n$的字符串,有$m$次操作,每次操作都是以下三种之一:一:$0,l,r,c$;把$[l,r]$的每个位置的字符都替换为字母$c$,保证字符串和$c$都是小写字母。二:$1,l,r$;询问子串$s_l​s_{l+1}​\ldotss_{r−1}s_r$​的最小循环节长度。三:$2,l,r$;询......