一切尽在代码之中,希望可以帮助到需要的人: )

#include <iostream>using namespace std;/*
这个cpp来研究一下字符串的定义方式(不包括string容器方式),研究一下字符串在c++中的存在形式,
研究一下 char*, char[], char*[], char**。
*///1.探索一下字符串在c++中存在的形式
void test01()
{   cout << "test01: " << endl;//这里定义一个字符指针,用字符串"string"赋了初值,"string"其实被编译器看作是字符's'的地址//即字符串的首地址,同理单这个首地址会被编译器认为是"string"const char* str = "string";//输出str,其实str是's'的地址,这个时候cout << str 输出不显示地址,直接打印"string"cout << str << endl;//然后我们再解引用一下str, cout << *str 发现打印了's',说明"string"确实给的是's'的地址cout << *str << endl;
}//2.探索以下char[]
void test02()
{cout << "test02: " << endl;//char str[]本质上应该是一个字符数组, 但我们赋的值确实一个字符串,说明编译器其实把字符串//看成了一个字符数组char str[] = "string";cout << str << endl;//还能当数组索引呢cout << str[0] << endl;//str[0]占用一个字节,其实就是字符型占用空间cout << sizeof(str[0]) << endl;//str占用7个字节,除了看见的6个字符外,还包含一个结束字符'\0',这是字符串数组特有的cout << sizeof(str) << endl;//输出以下第7个字符'\0'试试cout << str[6] << endl; //'\0'转义字符表示NULL//试一下正经的定义字符数组方法,这个时候sizeof(str2)就不会多算一个了,即'\0'结束符char str2[] = {'H','E','L','L','O'};cout << sizeof(str2[0]) << endl;cout << sizeof(str2) << endl;}//3.探索一下char* []和char**
void test03()
{cout << "test03: " << endl;//char* []很好理解,其实就是一个字符串数组const char* str_arr[] = {"str1","str2"};cout << str_arr[0] << endl;//char**可以这样看(char*)*,即定义了一个指向char指针类型的指针,把str_arr即char*数组//的首地址赋值给char**,这个时候char**就成为了一个指向char*数组的指针,从而可以操控char*数组,//这个时候char**也变成了一个char*数组。const char** str_arr2 = str_arr; //str_arr,第一个char*指针的地址cout << str_arr2[1] << endl;}int main()
{test01();test02();test03();cin.get();return 0;
}

C++中char*, char[], char*[], char**的含义相关推荐

  1. java中String,int,Integer,char、double类型转换

    java中String,int,Integer,char.double类型转换----https://www.cnblogs.com/kangyu222/p/5866025.html 转载于:http ...

  2. C++中const char*, string 与char*的转化

    C++中const char*, string 与char*的转化 原文:https://blog.csdn.net/zhang_alongzd/article/details/52790905 版权 ...

  3. MFC中CString转换成char数组的问题

    由于结构体中用到联合体(联合体需要确定分配内存分配大小)或其它因素,需要用char数组来保存字符串,但是在MFC中一般都是用CString来存放字条串.关于它们之间的转换,在VS2008中有时会出现异 ...

  4. c# char unsigned_C 中 char、signed char 和 unsigned char 的区别

    C 中 char.signed char 和 unsigned char 的区别 来源:http://bbs.chinaunix.net/thread-889260-1-1.html 参考:https ...

  5. 将所有的表中,数值类型由char,varchar改为nchar,nvarchar 的存储过程

    /*--将所有的表中,数值类型由char,varchar改为nchar,nvarchar 的存储过程 --邹建 2004.02(引用请保留此信息)--*/     /*--调用示例:         ...

  6. 编写一个程序实现顺序栈(假设栈中元素类型为char)的各种基本运算

    编写一个程序实现顺序栈(假设栈中元素类型为char)的各种基本运算,并在此基础上设计一个主程序完成如下功能: (1)初始化顺序栈S; (2)判断顺序栈S是否为空: (3)依次进栈元素a,b,c,d,e ...

  7. C语言中字符型(char)的简单使用

    C语言中字符型(char)的简单使用 刚接触C语言不久,在这记录下自己的一些学习心得.今天主要是在敲代码时遇到了一个小问题,如图: 应该是个比较简单的编程题.在我的想法中,应该使用循环逐个读入由A至Z ...

  8. Java中Character(类型char)类及类型详解

    1. java中char类型占2个字节.16位可以存放汉子,字母和数字占一个字节,一个字节8位,中文占2个字节,16位: 2. char类型赋值 char a='a'; //任意单个字符,加单引号. ...

  9. Java中string字符串和char字符之间的千丝万缕

    目录 前言 String字符串和char字符的区别 拓展 相互转换 String字符串转换成char字符数组 char字符转换成String字符串 char字符数组转换成String字符串 Strin ...

  10. C语言中字符数组char[] 和 字符串char*的区别

    在程序结构设计中使用结构体定义新的数据类型,如 typedef struct { int type; int value; char arg[]; } CommandInfo; 在strcpy时将一个 ...

最新文章

  1. 力扣(LeetCode)刷题,简单+中等题(第26期)
  2. 1台电脑,3个月,没有任何数据支撑!我做出了行业一线标准的识别应用
  3. UI设计实战篇——利用Bootstrap框架制作查询页面的界面
  4. [转]PageRank算法
  5. Linux开启动过程详解
  6. Linux从零开始(三、命令图解)
  7. 诺奖技术和高通量筛选双双找到新冠病毒的脉门
  8. 利用Cache缓存数据DataTable数据提高大数据量访问性能-.NET教程,数据库应用
  9. 对话框:创建对话框模板和修改对话框属性
  10. QTP自动化测试-点滴-步骤
  11. java学习(一)多态
  12. 机器学习1-线性回归、Ridge回归、LASSO回归
  13. 【机器学习系列】概率图模型第六讲:因子图和道德图
  14. 课程设计题二:7人多数表决器
  15. 怎么找到使用驱动器中的光盘之前需要将其格式化磁盘的数据
  16. 国开电大 广告心理学 形考任务
  17. 基于jquery fly插件实现加入购物车抛物线动画效果
  18. ARM开发板如何安装Linux系统
  19. vim快捷键(一)查找与替换
  20. sql数据库去重语法_sql数据库查询语句去重

热门文章

  1. python-4. 编写一个求整数n的阶乘(n!)的程序
  2. Win32 .Net QA
  3. Android-史上最优雅的实现文件上传、下载及进度的监听,网易严选Android开发三面面经
  4. 路由协议:西出网关无故人,敢问路在何方
  5. NOIP2021 T1 报数
  6. 一款12V1.5A 发案芯片原理图以及BOM单
  7. 用海信电视后面的同轴输出(母)可以接老功放的两个莲花头(母)吗?
  8. Vuex _ 核心插件
  9. 八皇后加强版:每个皇后最多攻击一个其它的皇后
  10. MyDockFinder 5.5体验极致模拟 Mac OS 系统桌面,完美支持最新版Win10 系统,可使用系统级模糊效果