C/C++ 指向字符的指针为什么可以用字符串来初始化,而不是字符地址。

2023-11-04

感谢大佬:YLEOY
https://blog.csdn.net/leigelaile1/article/details/77511323

本文是通过几篇转帖的文章整理而成的,内容稍有修改:

一、C语言中,为什么字符串可以赋值给字符指针变量

char *p;
a=‘5’;
p=&a; //显然是正确的,
p=“abcd”; //但为什么也可以这样赋值??

问:一直理解不了为什么可以将字串常量赋值给字符指针变量,请各位指点!

答:
双引号做了3件事:
1.申请了空间(在常量区),存放了字符串
2. 在字符串尾加上了’/0’
3.返回地址

你这里就是 返回的地址 赋值给了 p

二、为什么字符数组定义时可以使用字符串直接赋值,而定义后却不能

char *p = “hello”;
上边的表达式为什么可以,而把p换成数组,然后再赋值就不行了

解释:

字符串常量"hello"出现在一个表达式中时,"hello"表达式使用的值就是这些字符所存储的地址(在常量区),而不是这些字符本身。

所以,可以把字符串赋值给指向字符的指针p,而不能把字符串赋值给一个字符数组。

char a[10] = “hello”; //这样可以,这种情况是c语言初始化所支持的

如果写成char a[10]

然后 a = “hello” 这样就错误了。

同样是a数组,char a[10] = “hello”;这种是数组的初始化,和a[0] = ‘h’ a[1] = ‘e’…是一个道理

但是换成char a [10]

然后a = “hello”就不行了 “hello”赋值的值是一个地址,而a虽然也有地址,但是这与指针是不一样的,指针的值是地址,而数组的值虽然也是地址,但是却是一个常量,所以不能给常量赋值。

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

C/C++ 指向字符的指针为什么可以用字符串来初始化,而不是字符地址。 的相关文章

随机推荐

  • Pytorch 分布式训练(DP/DDP)

    参考 需要看 0 实操教程 GPU多卡并行训练总结 以pytorch为例 1 PyTorch 源码解读之 DP DDP 模型并行和分布式训练解析 知乎 2 pytorch中分布式训练DP DDP原理 知乎 3 pytorch中多卡训练 yt
  • 共轭梯度法详细推导分析

    共轭梯度法是一种经典的优化算法 算法求解速度较快 虽然比梯度下降法复杂 但是比二阶方法简单 一 引入 1 优化模型建立 假定待优化的问题如下所示 min x f x 1 2 x T A x b T x min x f x frac 1 2
  • vs 查看 C++ #define 宏定义展开代码

    方法一 define 通常是代码的展开 如果是 复杂 的 define 如何直观的查看展开效果 在 vs 中 选中需要查看的 cpp 文件 右键属性 预处理器 预处理到文件 选择是 确定 右键 cpp 文件 编译 debug 目录中会有一个
  • 打印机驱动如何连接计算机,打印机与电脑第一次连接驱动怎么操作

    打印机作为我们办公的设备之一 在使用过程中需要与电脑完成连接 才能进行使用 很多小伙伴不知道打印机与电脑第一次连接驱动怎么操作 于是就在小编后台给小编留言 那么今天小编就来叫教教大家打印机与电脑第一次连接驱动的方法 下面就让我们一起来看看吧
  • Tomcat性能调优方案

    Tomcat性能调优方案 一 操作系统调优 对于操作系统优化来说 是尽可能的增大可使用的内存容量 提高CPU的频率 保证文件系统的读写速率等 经过压力测试验证 在并发连接很多的情况下 CPU的处理能力越强 系统运行速度越快 适用场景 任何项
  • Python3-excel文档操作(二):利用openpyxl库处理excel表格:在excel表格中插入图片

    1 简介 excel表中可以插入图片 使用openpyxl库可以实现这个功能 2 代码 coding utf 8 import os import sys import time import openpyxl from openpyxl
  • 在React中使用Swiper做触摸内容滑动

    在React中使用Swiper做触摸内容滑动 缘由 在实现一个触摸内容滑动的功能的时候 想reactJS该怎么处理呢 然后被提点用Swiper可以 一想确实可以 用了网上的一些用在react里面的Swiper 但是并不怎么靠谱和好用 最后看
  • 【改进灰狼优化算法】改进收敛因子和比例权重的灰狼优化算法【期刊论文完美复现】(Matlab代码实现)

    个人主页 研学社的博客 欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 文献来源 4 Matlab代码实现 1 概述 文献来源
  • KBEngine简单RPG-Demo源码解析

    一 环境搭建 1 确保已经下载过KBEngine服务端引擎 如果没有下载请先下载 下载服务端源码 KBEngine https github com kbengine kbengine releases latest 编译 KBEngine
  • DRG/DIP改革激活医疗数据智能400亿新增市场| 爱分析洞见

    1 政策力度强 加速全覆盖 2021年底 国家医疗保障局印发 DRG DIP支付方式改革三年行动计划 这x标志着医保支付改革正式进入高速发展阶段 也意味着基于DRG DIP医保支付方式改革推动的医院信息化建设的大幕徐徐拉开 三年行动计划 以
  • curl命令错误码汇总

    状态码 状态原因 解释 0 正常访问 1 错误的协议 未支持的协议 此版cURL 不支持这一协议 2 初始化代码失败 初始化失败 3 URL格式不正确 URL 格式错误 语法不正确 4 请求协议错误 5 无法解析代理 无法解析代理 无法解析
  • QProgressBar、QProgressDialog

    QProgressBar 一 描述 进度条控件 用于向用户指示操作的进度 并向他们保证应用程序仍在运行 如果最小值和最大值都设置为 0 则条形图显示忙碌指示符 而不是步数百分比 二 类型成员 1 enum QProgressBar Dire
  • vue3 使用vue cli创建一个vue3项目教程指南

    第一步 1 使用vue version 查看是否安装vue 如果没有安装 使用命令 npm install vue cli g 安装 安装成功之后会显示版本号 2 创建项目 使用命令 vue create init pwa project创
  • CTFShow:萌新web1

    首先给出参考大佬的博客链接 ctfshow 萌新 web1 利用intval函数的特性获取敏感数据 ctfshow萌新web 士别三日wyx的博客 CSDN博客 第一次做web1题目 刚开始一脸懵逼 看了大佬的一些博客 才做出来 心里非常激
  • git push Permission denied (publickey)

    git push Permission denied publickey 产生原因 git服务器没有添加公钥 或者公钥损坏 解决方法 生成密匙 ssh keygen t rsa C 你的邮箱 复制公钥到git服务器上 gedit ssh i
  • 【tensorflow】【python】Tensor Check Solution

    2020年2月12日 0次阅读 共721个字 0条评论 0人点赞 QueenDekimZ Tensor Check This code used to check msg of Tensor stored in ckpt work well
  • 16进制转字符串

    public function hex2str hex str arr str split hex 2 foreach arr as bit str chr hexdec bit return str
  • 关于Unity3D 游戏音频控制脚本C#代码

    using UnityEngine using System Collections public class SoundManager MonoBehaviour private static SoundManager instance
  • java IO流注意项总结

    IO流有很多种 按照操作数据的不同 可以分为字节流和字符流 按照数据传输方向的不同又可分为输入流和输出流 程序从输入流中读取数据 向输出流中写入数据 在IO包中 字节流的输入输出流分别用java io InputStream和java io
  • C/C++ 指向字符的指针为什么可以用字符串来初始化,而不是字符地址。

    感谢大佬 YLEOY https blog csdn net leigelaile1 article details 77511323 本文是通过几篇转帖的文章整理而成的 内容稍有修改 一 C语言中 为什么字符串可以赋值给字符指针变量 ch