• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > char str[] 与 char *str的区别详细解析

char str[] 与 char *str的区别详细解析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了char str,char str什么意思,char str 20,char str 100,char str 10等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

此函数返回的是内部一个局部字符数组str的地址,且函数调用完毕后 此数组被销毁,所以你返回的指针也就指向一块被销毁的内存,这种写法是错误的。

那么为什么str[] = "abc";     
可以写呢?  
答案就在str[] = "abc";会有一个额外的拷贝过程,即把常量区的 "abc"拷贝到栈内存去,所以就可以写了。

总结:
所有以" "或' '包含的字符、字符串都是常量,应该是存储在堆上。

然后,字符串等价于字符数组,而不等于字符指针。根据上一条,字符串可以自动转型成字符指针。

再然后,"abcd"叫做“字符串常量”,任何类型的常量都是右值(没有名字的临时变量),必须让"abcd"成为左值(有名字的变量),才能够修改"abcd"这个字符串。

char str[]="name";与char str[5];str="name" 的不同之处在哪,能不能从内存分配的角度讲一讲,我知道数组名字是一个常量地址(指针),第一个为什么对,第二个为什么错?

第二个先定义了一个数组,要知道数组名str是数组分配到的空间的首地址,str="name"应该是等号两边类型不匹配的错误。一般的常量应该没有内存地址的,除非有某个变量指向了该常量。

数组名是地址常量,那么常量当然不允许被重新赋值。
"name"是一个字符串常量他存储在常量存储区,只能用一个指针指向它却不允许改变:char*p;p="name";
一般情况下char str[]="name";数组是在栈上的空间由编译器分配,内容可以由用户改变。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • char str[] 与 char *str的区别详细解析
  • string与char*转换的使用详解

相关文章

  • 2022-04-30C语言加减乘除运算
  • 2017-05-28C语言对组文件处理的相关函数小结
  • 2017-05-28在Visual Studio中用C++语言创建DLL动态链接库图文教程
  • 2017-05-28C++ 字符串去重排序实例代码
  • 2017-05-28C语言 选择排序算法详解及实现代码
  • 2017-05-28win32 api实现2048游戏示例
  • 2022-04-30数据在内存中的存储(二进制形式存储)
  • 2017-05-28C++中构造函数与析构函数的调用顺序详解
  • 2017-05-28C语言泛型编程实例教程
  • 2017-05-28C语言开发简易版扫雷小游戏

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言中函数参数的入栈顺序详解及实例
    • 字符串拷贝函数memcpy和strncpy以及snprintf 的性能比较
    • C++实现简单的希尔排序Shell Sort实例
    • C语言 数据结构之中序二叉树实例详解
    • C语言中一些将字符串转换为数字的函数小结
    • C++中fstream,ifstream及ofstream用法浅析
    • 用VC++6.0的控制台实现2048小游戏的程序
    • 深入理解c++常成员函数和常对象
    • C++设计模式之策略模式
    • C++实现广度优先搜索实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有