char数组和指针的区别

2023-05-16

一个简单的字符分割函数引发的思考。

char * SegStr1(const char * pSrc,int n)
{
	int nLen = strlen(pSrc);
	char ptrSrc[256] = {0};
 	char *pSeg = ptrSrc;

	for (int n = 0;n<nLen;n++)
	{
		*pSeg++ = pSrc[n];
		if ((n+1)%3 ==0)
		{
			*pSeg++ = ' ';
		}
	}

	return ptrSrc;
}
char * SegStr2(const char * pSrc,int n)
{
	int nLen = strlen(pSrc);
	char ptrSrc[256] = {0};
 	//char *pSeg = ptrSrc;

	for (int n = 0;n<nLen;n++)
	{
		//*pSeg++ = pSrc[n];
		*ptrSrc++ = pSrc[n];
		if ((n+1)%3 ==0)
		{
			//*pSeg++ = ' ';
			*ptrSrc++ = ' ';
		}
	}

	return ptrSrc;
}

  SegStr2函数会报错:error C2105: “++”需要左值。

  为什么会出现这种情况?

  此错误说明SegStr2中的自增操作是错误的,是对常量的自增。而SegStr1则不会发生此错误说明SegStr1中的自增操作是对变量的操作。

  由此引出char数组和指针的区别:

  ptrSrc数组存储的内容存放在堆或者栈中,是可以进行修改的;但是整个数组的地址(和&ptrSrc[1]相等)存放在常量区是不可以修改的。

  pSeg指针存储的内容是存放在常量区的不可以进行修改,但是pSeg本身是存放在常量区的不可以进行修改。

  char *pSeg = ptrSrc;  pSeg的指针指向ptrSrc数组,对pSeg指针进行操作就可以对ptrSrc进行依次赋值。

  本文制作简单阐释,详细区别可参考此博文。

  https://blog.csdn.net/yahohi/article/details/7427724

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

char数组和指针的区别 的相关文章

  • C++ const char* 和 const char[] 之间的区别

    我读到一个关于以下之间区别的问题 const char and const char 有一段时间 我认为数组只是指针的语法糖 但有些事情困扰着我 我有一段类似于以下内容的代码 namespace SomeNamespace const ch
  • 将 std::string 转换为 C 函数的 char* 时要注意什么?

    我读过很多帖子询问如何转换 C std string or const std string to a char 将其传递给 C 函数 似乎在执行此操作时有很多警告 人们必须注意字符串是否连续以及许多其他事情 关键是我从来没有真正理解人们需
  • 如何将此代码转换为使用字符串

    char recursivecombo char str int choices int level int len strlen str level if level choices for int i 0 i lt len 2 i pr
  • 如果在某些输入之后使用 getline() 则不起作用[重复]

    这个问题在这里已经有答案了 可能的重复 需要有关 getline 的帮助 https stackoverflow com questions 1744665 need help with getline getline 不起作用 如果我在一
  • 如何截断C char*?

    就如此容易 顺便说一句 我正在使用 C 我已经阅读了 cplusplus com 的 cstdlib 库函数 但我找不到一个简单的函数 我知道字符的长度 我只需要erase最后三个字符 我可以使用 C 字符串 但这是用于处理文件 它使用 c
  • C 字符值算术

    我一直在阅读 C 编程语言 一书来学习 C 我偶然发现了算术s i 0 他们说它给出了存储在 s i 中的字符的数值 我不太明白 它怎么能通过减法给出值呢 注意 这用在 atoi 函数中 该函数将数字字符串转换为其等价的数字 谢谢 可能重复
  • Ansichar 和 char 有什么区别? [复制]

    这个问题在这里已经有答案了 我最近遇到了这种数据类型不匹配的情况 这是我以前从未见过的 我希望有人能解释它们是什么以及它们有何不同 我得到的错误是 F2063 DCC 错误 E2010 不兼容的类型 AnsiChar 和 Char 历史上在
  • "" 和 " " 之间有什么区别,如何根据字符测试前者?

    在Java中 空引号 和 带有单个空格的引号 之间有什么区别以及如何测试前者char 代表空字符串 is not空 它包含一个空格字符 你不能用以下方式来测试前者char 因为没有字符 用 a 来测试它String 它是String长度为零
  • 如何计算字符串中括号的个数?

    这是我计算字符串中括号数量的方法 public int checkParenthesis String print char par int num 0 for int i 0 i
  • C 删除文件最后 n 个字符

    我需要使用 C 代码从文件中删除最后 n 个字符 起初我尝试使用 b 但它返回了分段错误 我看到类似问题的有趣答案here https stackoverflow com questions 584639 truncate file and
  • 指向常量字符的指针

    下面的代码指向a中的第一个字符字符数组可在只读存储器中使用 是对的吗 const char ptr String one 现在 当ptr开始指向另一个内存位置 ptr String two 第一个会发生什么字符数组 执行结束时该内存位置是否
  • ChrW(e.KeyCode) 在 C# 中的等价物是什么?

    在VB NET 2008中 我使用了以下语句 MyKeyChr ChrW e KeyCode 现在我想将上面的语句转换成C 有任何想法吗 快速而肮脏的相当于ChrW在 C 中只是将值转换为char char MyKeyChr char e
  • 在这种情况下,数组索引中的字符表示如何工作?

    我是 C 初学者 我有这样的代码 include
  • 字符类型边界处增量运算符的行为

    我想知道 C 在这种情况下的表现如何 char variable 127 variable 在这种情况下 变量现在等于 128 但是 增量运算符是否将值包装到其下限或是否发生了溢出 发生溢出并导致未定义的行为 第 5 5 节 如果在计算表达
  • 为什么这段带有“1234”的代码可以在 C++ 中编译?

    为什么会这样编译 char ch 1234 no error 但不能超过 4 个chars char ch 12345 error Too many chars in constant 是的 我知道 用于一个char and 用于字符串 我
  • C++:获取数组中char元素的索引

    我需要获取数组中的字符数 const char myarray 5 0 a e f c Create array of char int number 0 Create variable number getposition myarray
  • Java:带有 unicode 字符的 String.toCharArray()

    我知道 char 不能包含 Unicode 字符 例如 char c u1023 那么我该怎么做 String s ABCDEFG u1023 char c s toCharArray 出于性能原因 我想将 s 转换为 CharArray
  • 从 unsigned char* 到 char* 的转换无效

    这是一个代码 1 int main int argc char argv 2 3 signed char S psc 4 unsigned char U pusc 5 char C pc 6 7 C S 8 C U 9 10 pc psc
  • 非法转义字符“\”

    我想在链接末尾获取名称 所以我这样做了 if invName substring j k equals copyf invName substring 0 j Eclipse 说字符串文字没有用双引号正确关闭 如何将字符串与此字符进行比较
  • C 的“char”使用什么字符集? [复制]

    这个问题在这里已经有答案了 简单的问题 我最近开始用 C 编程 有一个简单的问题 C 编程语言在其 char 类型中使用什么字符集 例如 ASCII 还是取决于软件 操作系统 char 本质上是 1 个字节 主要在所有操作系统上 所以默认情

随机推荐

  • 常用日志解决方案实践与学习-基于AOP利用注解实现日志记录原理分析

    往期博客 常用日志解决方案实践与学习提到开源的利用注解优雅的记录日志两个开源仓库 xff0c 使用形式都是引入依赖 xff0c 加上注解即可输出操作日志 本篇文件大概分析下原理实现 美团开源仓库https github com mouzt
  • 《深入理解RPC框架原理与实现 华钟明》使用Netty、Zookeeper等实现一个简单的RPC框架、自定义注解、SPI机制实践与原理分析

    前言 读书笔记见往期博客 xff1a 深入理解RPC框架原理与实现 华钟明 读书笔记 接下来就是实践练习环节 xff0c 结合书中最简易的实现的RPC的源码和一些开源的源码 xff0c 来自己一步一步手敲出一个自己升级版的RPC 通过实践
  • 《Elasticsearch源码解读与优化实战》张超-读书笔记

    写在前面 好久没更新博客了 xff0c 应届狗没办法啊 为了秋招搞了小半年 xff0c 从去年5月到现在搞了两段实习 xff08 京东 游戏公司 xff09 xff0c 最终年前拿到一家还行的offer xff0c 现在已经入职实习了 xf
  • MathType MTEF v.5学习文档

    前言 MathType是一款公式工具 xff0c 可以作为插件安装到office等软件 xff0c 其将公式存储两部分wmf文件和二进制objectOle对象 xff0c 其中公式存储是以MTEF语言内嵌在这两部分中 xff0c 这是一款M
  • 「最全」电子元器件图片、名称、符号图形对照(精编请收藏)

    点击上方 大鱼机器人 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 xff01 一 电阻系列 电阻器 xff08 Resistor xff09 是一个限流元件 xff0c 用字母R来表示 xff0c 单位为欧姆 将
  • Karto_slam跑激光雷达(北阳ust-10lx下一篇介绍使用)

    0 当前配置 Ubuntu 16 04ROS KineticOpencv 3 4 1Ceres solvergcc version 5 4 0 20160609 g 43 43 Eigen3 G2O 1 前言 本人当下在学习slam kar
  • 串级PID控制四轴飞行状态-分析

    参考网页 xff1a http blog csdn net nemol1990 article details 45131603 一 概念 单极PID xff1a 当你知道系统当前状态和期望状态后 xff0c 如何将系统从当前状态调整到期望
  • Ubuntu18.04安装Nvidia显卡驱动,CUDA+CUDNN,完整Qt,编译安装OpenCV4.1.1 with CUDA and Qt

    目录 N卡无法开机问题一 安装Nvidia显卡驱动1 禁用安全引导2 禁用默认驱动程序3 添加Nvidia驱动源4 安装驱动 二 安装CUDA和CUDNN1 下载2 安装3 配置环境变量4 测试CUDA5 下载 xff0c 安装CUDNN
  • 纯C语言实现仿C++STL泛型链表

    声明 本代码完全开源 xff0c 可以用于任意用途 xff0c 但代码并未做完善的测试 xff0c 性能也不能保障 xff0c 主要用于初学者学习 源码链接 xff1a GitHub 一 原理 普通的单向链表的原理就是一个节点存储着数据和指
  • Ubuntu上使用CLion开发STM32,并使用JLink下载、调试

    目录 一 环境准备二 下载STM32CubeMX固件库三 使用STM32CubeMX创建工程四 CLion配置五 CMake简单操作和添加DSP库CMake简单操作添加DSP库 五 调试时查看外设寄存器 六 使用JLinkGDBServer
  • C++进阶——STL源码之迭代器(iterators)

    STL迭代器 在 STL 编程中 xff0c 容器和算法是独立设计的 xff0c 即数据结构和算法是独立设计的 xff0c 连接容器和算法的桥梁就是迭代器了 xff1a 迭代器是一种行为类似指针的对象 xff0c 而指针的各种行为中最常见也
  • C++基础——STL常见问题总结

    1 STL由哪些组件组成 容器 xff08 Containers xff09 xff1a 各种数据结构 xff0c 如 xff1a vector list deque set map 用来存放数据 从实现的角度来看 xff0c STL容器是
  • private static final long serialVersionUID = 1L 干什么的?

    private static final long serialVersionUID 61 1L xff1b 是定义以一个序列号 java源码里有大量的类都有这么一个序列号 目的就是把java对象序列化而后进行保存 java的序列化机制式通
  • 协议:PELCO-D

    PELCO D的功能是用于矩阵和其它设备之间的通信协议 基本信息 数据格式 xff1a 1位起始位 8位数据 1位停止位 xff0c 无校验位 波特率 xff1a 2400B S 命令格式 字节1 字节2 字节3 字节4 字节5 字节6 字
  • 9年FPGA工作经验,转行了,苦海无涯……

    整理 xff1a 付斌 xff0c 内容来自网络 01 9年峥嵘岁月 我很少说话 xff0c 因为怕被人鄙视 工作了9年的fpga xff0c 总要总结 其实说我的fpga经验 xff0c 也是一坨屎 三年的 xff0c 用altera的c
  • GPS-RTK

    一点一点的补充吧 背景 1 xff0e 各种控制测量传统的大地测量 工程控制测量采用三角网 导线网方法来施测 xff0c 不仅费工费时 xff0c 要求点间RTK 在工程测量的应用通视 xff0c 而且精度分布不均匀 xff0c 且在外业不
  • 浅谈栈帧

    一 什么是栈帧 xff1f 什么是栈帧 xff0c 首先引用百度百科的经典解释 xff1a 栈帧也叫过程活动记录 xff0c 是编译器用来实现过程 函数调用的一种数据结构 实际上 xff0c 可以简单理解为 xff1a 栈帧就是存储在用户栈
  • madVR+potplay 基本设置

    ctrl 43 j 调出 madvr 的OSD菜单 如下图 xff1a 如何设置 madVR 10bit 输出 xff1a 1 确保视频源是10bit 源 2 显示器设置 如下 xff1a 3 渲染设置如下 xff1a 设置完成 xff0c
  • 4.jetson更换python版本

    问题与背景 jetson自带的python版本是3 6 9 xff0c 太老旧了 xff0c 希望更换python版本 尝试替换成python3 7的版本 但是在未替换之前 xff0c 已经装了pip3了 xff0c 是否pip3会与pyt
  • char数组和指针的区别

    一个简单的字符分割函数引发的思考 char SegStr1 const char pSrc int n int nLen 61 strlen pSrc char ptrSrc 256 61 0 char pSeg 61 ptrSrc for