问题:C语言中,char str的 str到底表示什么?

描述:

#include

int main()

{

#第一处

char *pstr = "abcdef";

printf("%c\n", *pstr);

#第二处

char str = 'A';

char *ppstr = &str;

printf("%c\n", *ppstr);

return 0;

}

在上面的代码中,第一处部分,pstr是指向常量区字符数组的一个指针。第二处,ppstr表示指向的是字符'A'所在内存的地址。

我的疑问是,同样定义的定义方式:char *str,第一处和第二处,却有不同的表达意思。为什么会这样?不应该是他们表达相同的意思才对吗?解决方案1:

本来就是一样的意思。指针:描述的变量的类型。

指向字符所在内存地址:描述作用。

char *pstr = "A";

这里即定义了 char 类型的指针pstr。它的用途是存放了内存上的字符"A"的地址。

PS: 涉及到常量和变量的指针问题属于其他内容,暂不展开。解决方案2:

某种意义上是同样的意思. 第一处的pstr同时也是个指向char 'a'的指针.

pstr 也 能当字符串用是因为"字符串到哪为止"这个信息是用'\0'编码到字符串本身的, 只要有首地址pstr就足够定位包括'b', 'c', ... '\0'的整个字符串.

用指针操作内存这个"机械的语义"总是不变的, 变化的是我们怎样看待内存.解决方案3:

主要区别就是指针指向的内存区段的不同。这没有原因,语言特性,c语言就是这么管理内存的,语法也就是这样。要说好处,常量区的字符串可以共享,节省内存。

第一处,如你所说,这种字符串字面量是定义在常量区。

第二处,char str = 'A';定义在栈上,然后定义一个指针指向他。

c语言char str什意思,C语言中,charstr的str到底表示什么?相关推荐

  1. c语言char有什么作用,C语言中char*和char[]用法区别分析

    本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很大.以下是个人的一些看法,有不正确的地方望指正 ...

  2. c语言中变量加1,c语言中,指针加1的情况.指针变量详细介绍

    指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址. 要搞清一个指针需要搞清指针的四方面的内容: 指针的类型, 指针所指向的 类型, 指针的值或者叫指针所指向的内存区, 还有指针本身所占 ...

  3. c语言中char是多少字节,c语言中char_char c = \'\\1\' 十进制是多少_c语言char

    网友求助:c语言中char_char c = \"\\1\" 十进制是多少_c语言char 问题 最佳答案 推荐答案 char一般默认是1个字节的无符号整型,范围0~255.如果是 ...

  4. c语言strlen用法,如何使用c语言中的strlen()函数

    c语言中strlen()函数的用法是:[strlen(const char *str)].该函数用于计算字符串的长度,直到空结束字符,但不包括结束字符,并返回字符串的长度. 函数介绍: (推荐教程:c ...

  5. c语言以空格分割字符串_c语言中,输入任意字符串,任意空格隔开

    c语言中,输入任意字符串,任意空格隔开 关注:132  答案:3  mip版 解决时间 2021-01-27 16:01 提问者更无风月 2021-01-27 01:51 如题,希望大神代码 最佳答案 ...

  6. c语言 strcpy原型,浅谈C语言中strcpy,strcmp,strlen,strcat函数原型

    实例如下: //strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, cons ...

  7. c语言while break用法举例,c语言中continue和break的用法

    目前,随着计算机在人们生活和工作中的普及,其教学研究地位也在逐渐提升.C语言是一种计算机程序设计语言,其具有高级语言和汇编语言的特点.下面小编就跟你们详细介绍下c语言中continue和break的用 ...

  8. c语言程序关键字是什么,C语言中32个关键字详解

    C语言中32个关键字详解 由 ANSI 标准定义的 C 语言关键字共32个,根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两大类. 一.数据类型关键字 A 基本数据类型(5个) vo ...

  9. C语言中字母a等于,C语言中’a’和"a"有什么区别?,c语言中“!a"是什么意思啊...

    导航:网站首页 > C语言中'a'和"a"有什么区别?,c语言中"!a"是什么意思啊 C语言中'a'和"a"有什么区别?,c语言中"!a"是什么意思啊 匿名网友: 1.本质区 ...

最新文章

  1. AutoIt3(AU3)开发的智能驱动安装工具,用于系统封装,支持参数静默启动
  2. 阿里愚人节发布“如影计划”,黑科技让支付宝与掌心融为一体
  3. matlab nargout
  4. sk_buff结构分析
  5. PuTTY的下载、使用和设置,并推荐同类佳软——MobaXterm
  6. PostgreSQL 恢复模式错误日志增强 - 提供正在恢复的WAL(XLOG)文件位置
  7. Linux用户、群组管理
  8. 移动端app设计指南
  9. AlertDialog创建6种对话框的用法
  10. 2017.9.26 货币兑换 失败总结
  11. Hibernate和MyBatis的缓存机制和比较
  12. nginx的反向代理、负载均衡、页面缓存、URL重写及读写分离
  13. 036 关于网站的UV分析
  14. 测试和开发怎么互转?
  15. win10+deepin安装 linux修改系统启动项
  16. wps里ppt怎么换另一个的模板_现学现用极简技术|智能PPT,一个按键轻松搞定专业的制作!...
  17. 电路图:MC34063 2.2V-6V升压到7V电路
  18. java dnf 自动打怪,按键精灵 做DNF 自动刷图辅助
  19. 翻译网Gengo获1200万美元投资,价值何在
  20. 字符串常量和变量是什么?

热门文章

  1. 《深入理解Java虚拟机》内存管理机制 部分 读书笔记
  2. RUNA WFE,workflow environment based on JBoss' JBPM engine
  3. 国内有名的文化与教育调查研究咨询公司
  4. 22 最近共同先祖(Lowest Common Ancestor of a Binary Tree)
  5. Qpython教程和软件下载(Android手机学习python的平台利器)
  6. 如何利用SQL注入进行爆库
  7. 微信小程序开发手册 - 02JSON 配置
  8. 西人应该骄傲,全国对不起山西
  9. Android仿网易游戏的精美开场动画+动画基础详解
  10. 《朱子治家格言》原文