今天在看书中例题时看到了如下代码:

#include <iostream>
using namespace std;int main()
{char *p = NULL;p = "computer";cout << p << endl;for (int i = 0; i < 8; ++i)cout << p[i];cout << endl;while (*p){cout << *p;++p;}cout << endl;return 0;
}

一股浓浓的 C 风格代码扑面而来。我试图对其进行修改。

#include <iostream>
using namespace std;int main()
{char p[] = {};p = "computer";cout << p << endl;for (int i = 0; i < 8; ++i)cout << p[i];cout << endl;while (*p){cout << *p;++p;}cout << endl;return 0;
}

系统报错。暴露出了我的一个理解问题。
因为当一个字符串常量出现在表达式中,使用的值就是这些字符所存储的地址,而不是这些字符本身。因此,我们可以把字符串赋值给一个指向字符的指针。
此时的指针类似与一个字符数组的数组名,但不同的是,这个指针是可变的,而数组名指针是常量指针。这也就是为什么修改后的代码是错误的,因为我们不能赋值给一个常量。
于是我做了更大幅度的修改。

#include <iostream>
using namespace std;int main()
{char p[] = "computer";cout << p << endl;for (int i = 0; i < 8; ++i)cout << p[i];cout << endl;char *q = p;while (*q){cout << *q;++q;}cout << endl;return 0;
}

字符串赋值给字符指针相关推荐

  1. C语言 将字符串赋值给字符指针

    #include <stdio.h> int main(void){char *s="hello";printf("输出字符:%c \n", *s) ...

  2. 为什么字符串可以赋值给字符指针变量

    本文系转载,对原文的主要几点进行了提炼,想看更详细的内容,请看原帖: https://blog.csdn.net/yichu5074/article/details/81701850?utm_sour ...

  3. 2020-11-30(为什么字符串可以赋值给字符指针变量)

    今天带着疑问去看了看字符指针,就一直在想为什么输出一个指向字符的指针,它输出的不是地址,而是字符,结果挖到了一个宝藏博客,然后结合了自身的想法,摘抄了大部分内容,最后我也把我自己的疑问给解决了,外加再 ...

  4. c语言中不能将字符串赋值给字符数组

    参考文章:c语言中,为什么字符串可以赋值给字符指针变量 1.可以将字符串赋值给指向字符的指针p,而不能将字符串赋值给一个字符数组. char a[10]="hello";//正确的 ...

  5. c语言字符数组给字符指针,C语言常见有关问题之字符串数组和字符指针数组有关问题...

    C语言常见问题之字符串数组和字符指针数组问题 通过如下的实例来讲解这个问题: #include int main(void) { char a[3][4] = {"123", &q ...

  6. C语言中将字符串赋值给字符数组的问题

    问不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组赋值." 那么str1="China"是不是错的? char a[ ]='toyou'; 为什么是正确的呢? ...

  7. C语言:字符串赋值给字符数组

    一个字符串可以赋值给一个字符数组,只要不定义这个字符数组的长度就行 例如: char a[]="Hello" 此时存在数组里面,也是一个字符一个位,不包括双引号 如果要输出时 就用 ...

  8. keil c语言字符串赋值,keil c指针变量赋值 请指点下迷津

    这个是我在多路温湿度控制系统中用到的接收方法,Rs485方式的 如果想采用Rs485的朋友也可以参考一下 #define FRAME_HEAD          0x24 uchar RxBuf[7] ...

  9. 字符型指针,数组,字符串赋值

    一. C语言中,为什么字符串可以赋值给字符指针变量 char *p,a='5'; p=&a;                     //显然是正确的, p="abcd"; ...

最新文章

  1. 我所理解的卡尔曼滤波——公式推导与应用
  2. python使用imbalanced-learn的OneSidedSelection方法进行下采样处理数据不平衡问题
  3. 打盹模式 android,android – 在打盹模式下获取位置更新
  4. maven 一个模块生成多个jar包
  5. python网络爬虫 - 如何伪装逃过反爬虫程序
  6. 微型计算机的内存主要包括rom,信息安全技术题库:路由器硬件组件主要包括( )、闪存、ROM、RAM。 - 作业在线问答...
  7. Mina2.0框架源码剖析(八)
  8. 关于用飞信框架运行net程序-用批处理运行
  9. Nexus入门指南(图文)[转]
  10. vue --- v-html、v-bind
  11. 《深入理解ES6》4.扩展的对象功能
  12. python爬虫xpath提取数据_python爬虫的页面数据解析和提取/xpath/bs4/jsonpath/正则(1)...
  13. KlayGE 4.4中渲染的改进(三):高质量无限地形
  14. C++ 常见错误(00) —— C#调用c++做的dll是报错
  15. php环境搭建phpeclipse
  16. echarts模拟迁徙城市重名问题
  17. Incapsula CDN到底好在哪
  18. adb和frida的一点简单使用记录
  19. Visual Servo Control Part I: Basic Approaches
  20. 红米note4x装linux,红米Note4X怎么装卡/插卡 红米Note4X手机SIM卡安装图文教程

热门文章

  1. signature=1e7fdb7cffefe41f7fc223c905203239,A Novel Codeword Grouped SCMA
  2. Vue移动端UI框架
  3. HP Probook 4411S 在UBUNTU下内置音响不发声的解决办法
  4. 代码一键美化工具Astyle,非常实用
  5. 顶尖文案app_topys顶尖文案app下载
  6. qrc路径_QT中添加的资源文件qrc时的路径问题小结
  7. 基于道路智慧路灯的城市新建道路,应该如何对智慧灯杆进行规划设计呢?
  8. 使用java读取文本文件的倒数第N行
  9. Opengrok的安装及使用
  10. 去除字符串中的表情符号以及判断字符串中是否存在表情符号