当前位置: 首页 > news >正文

C++中char *,char a[ ]的特殊应用

1.数组的本质

数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。

2.指针

指针也是一种变量,只不过它的内存单元中保存的是一个标识其他位置的地址。

3.字符串常量的本质是它的第一个字符的地址(与数组类似,数组名也为其第一个元素的地址)

char *s ;
s = "mgchen";   //此处为什么可以把一个字符串常量赋值给一个指针呢??原因就是,字符串常量在编译器中是把它看做一个地址。

4.char * 与 char a[ ]

char  *s;
char  a[ ] ;

a代表字符串的首地址,而s 这个指针也保存字符串的地址(其实首地址)。
因此可以进行下面这种赋值:

s = a;
将a的值赋值给s,s为指针,虽然a为数组,但是在使用a时,编译器将其看做数组首元素的地址,所以可以将a的值赋值给指针s

注意:sizeof()数组名,和sizeof()指针的结果是完全不一样的。

char a[10]char *s ;sizeof(a) 的结果为1010个元素*1个字节(char类型占一个字节))
sizeof(s) 的结果为4.1个指针占4个字节)

但是当数组名作为形参传递给函数时,此时数组名退化为指针,那么sizeof()数组名和sizeof()指针的结果一样。

5.char** 和char *a[ ]

char *a[ ] 表示一个数组,数组中的元素才是char * (即元素是指向char类型的指针)。

char s 为一个二级指针,s中保存的是一级指针char *的地址。可以这么来理解char *(*s),我定义一个指针s,但是我指针s保存的不是传统某个变量的地址,而是保存的是一个char * 指针的地址。(把char理解为a,char *理解为b,char理解为c。那么b的值是a的地址,然而c的值又为b的地址)

http://www.lryc.cn/news/1798.html

相关文章:

  • 【Windows10】电脑副屏无法调节屏幕亮度?解决方法
  • Paper简读 - ProGen2: Exploring the Boundaries of Protein Language Models
  • leaflet 加载WKT数据(示例代码050)
  • 设计模式-组合模式和建筑者模式详解
  • Pcap文件的magic_number
  • MDS75-16-ASEMI三相整流模块MDS75-16
  • 基本TCP编程
  • 【沁恒WCH CH32V307V-R1开发板读取板载温度实验】
  • 学习SpringCloudAlibaba(二)微服务的拆分与编写
  • 通过对HashMap的源码分析解决部分关于HashMap的问题
  • 【无标题】
  • 渗透测试 -- 网站信息收集
  • Windows 搭建ARM虚拟机 UOS系统
  • day58每日温度_下一个更大元素1
  • 超清遥感影像语义分割处理
  • RabbitMQ安装及配置
  • 网络协议(四):网络互联模型、物理层、数据链路层
  • 请问有没有关于数据预测的方法?
  • [CVPR 2021] Your “Flamingo“ is My “Bird“: Fine-Grained, or Not
  • clickHouse笔记
  • 10.jQuery中请求预处理 $.ajaxPrefilter()
  • 【黄啊码】浅谈PHP入门|如何学习PHP
  • 人大金仓数据库的归档日志
  • C++:类和对象(上)
  • 数据库 与 数据仓库的本质区别是什么?
  • 数据库实践LAB大纲 05 JDBC 连接
  • Linux部署nuxt3
  • 鸟哥的Linux私房菜读书笔记:文件系统的简单操作
  • 论如何用python自动下载爱的妹子视频~嘿嘿嘿~
  • 传奇GOM引擎配置PAK密码补丁教程