C语言中存储多个字符串的两种方式
C语言中存储多个字符串的两种方式
方式一 二维字符串数组
声明:
char name[][] = { "Justinian", "Momo", "Becky", "Bush" };
在内存中的存储:
J | u | s | t | i | n | i | a | n | \0 |
M | o | m | o | \0 | \0 | \0 | \0 | \0 | \0 |
B | e | c | k | y | \0 | \0 | \0 | \0 | \0 |
B | u | s | h | \0 | \0 | \0 | \0 | \0 | \0 |
这种方式会造成内存空间的浪费
方式二 一维指针数组
声明:
char *name[] = { "Justinian", "Momo", "Becky", "Bush" };
在内存中的存储:
name[0]
J | u | s | t | i | n | i | a | n | \0 |
name[1]
M | o | m | o | \0 |
name[2]
B | e | c | k | y | \0 |
name[3]
B | u | s | h | \0 |
可见此种方式能够避免不必要的内存浪费
验证结果:
#include <stdio.h> int main()
{
char name1[][] = { "Justinian", "Momo", "Becky", "Bush" };
char *name2[] = { "Justinian", "Momo", "Becky", "Bush" }; printf("--------二维字符串数组的存储方式-------\n");
for(int i = ; i < ; i++)
{
printf("name[%d] = \"%s\"\t", i, name1[i]);
printf("所占地址:%p\n", name1[i]);
} printf("--------一维指针数组的存储方式--------\n");
for(int i = ; i < ; i++)
{
printf("name[%d] = \"%s\"\t", i, name2[i]);
printf("所占地址:%p\n", name2[i]);
}
}
运行结果:
差距显而易见
C语言中存储多个字符串的两种方式的更多相关文章
- spring接收json字符串的两种方式
一.前言 前几天遇到一个问题,前端H5调用我的springboot一个接口(post方式,@RequestParameter接收参数),传入的参数接收不到.自己测试接口时使用postman的form- ...
- Android中H5和Native交互的两种方式
Android中H5和Native交互的两种方式:http://www.jianshu.com/p/bcb5d8582d92 注意事项: 1.android给h5页面注入一个对象(WZApp),这个对 ...
- python中字典的循环遍历的两种方式
开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python ...
- java中读取配置文件ResourceBundle和Properties两种方式比较
今天在开发的时候,需要把一些信息放到配置文件中,方便后续的修改,注意到用的是ResourceBundle读取配置文件的方式,记得之前也见过使用Properties的方式,就比较好奇这两种方式的区别,网 ...
- Python字符串的两种方式——百分号方式,format的方式
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- 程序中使用log4J打印信息的两种方式
(1)通过org.apache.commons.logging.Log 接口实例化: public static Log log = LogFactory.getLog(String name); p ...
- Java通过图片url地址获取图片base64位字符串的两种方式
工作中遇到通过图片的url获取图片base64位的需求.一开始是用网上的方法,通过工具类Toolkit,虽然实现的代码比较简短,不过偶尔会遇到图片转成base64位不正确的情况,至今不知道为啥. 之后 ...
- 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入
在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...
- java中创建字符串的两种方式(“”与new String())及区别
结论:通过""创建的字符串实际上在java堆中只有一个,而通过new string创建出来的字符串在java堆中占有不同的内存. 第一个True表明这两个在内存中拥有相同的地址,那 ...
随机推荐
- luogu P4590 [TJOI2018]游园会 dp套dp
LINK:游园会 容易想到 设\(f[i][j][k][l]\)前i个字符 j表示状压的w个字符状态为j 长度<=k 匹配到了NOI的第l个位置的方案数. 不过只能得到30分. 考虑优化 其实优 ...
- 回首Java——写在前面
我记得在大学的课程要求中,第一个接触的高级编程语言,应该是C语言或者C++等.但是Java应该是我的编程母语,我在高中毕业就接触了Java语言.当时看的是纸质书,具体书名也忘记了.只记得当时第一次接触 ...
- 简单的vector--- 2
如何重载operator[] 及其相关细节 如何使用 const_cast<>( ) 和 static_cast<>( ) 模板类 如何内部声明,外部定义友元函数 使用 ...
- Java语言程序设计2019.9.16
1.Java的基本运行单位是类. 2.类是由方法和变量组成. 3.变量类型分为byte,int,double,long,short,boolean,char,float.java中整数类型默认的int ...
- mysql存储引擎InnoDB详解,从底层看清InnoDB数据结构
InnoDB一个支持事务安全的存储引擎,同时也是mysql的默认存储引擎.本文主要从数据结构的角度,详细介绍InnoDB行记录格式和数据页的实现原理,从底层看清InnoDB存储引擎. 本文主要内容是根 ...
- Faiss流程与原理分析
1.Faiss简介 Faiss是Facebook AI团队开源的针对聚类和相似性搜索库,为稠密向量提供高效相似度搜索和聚类,支持十亿级别向量的搜索,是目前最为成熟的近似近邻搜索库.它包含多种搜索任意大 ...
- 阿里出品的最新版 Java 开发手册,嵩山版,扫地僧
说起嵩山,我就想起乔峰,想起慕容复,以及他们两位老爹在少林寺大战的场景.当然了,最令我印象深刻的就是那位默默无闻,却一鸣惊人的扫地僧啊.这次,阿里出品的嵩山版 Java 开发手册的封面就有一个扫地僧, ...
- java运算符二
一 赋值运算符 /* * 赋值运算符 * +=, -=, *=, /=, %= : * 上面的运算符作用:将等号左右两边计算,会将结果自动强转成等号左边的数据类型,再赋值给等号左边的 * 注意:赋值运 ...
- QT QMdiArea 添加背景或添加背景图片失效问题
说起QMdirArea 这个控件与其他控件真所不同.... 这里记一下 我踩过的坑之一,,,,, QMdiArea 默认的背景 不符合我要求,,当时我就理所当然就想往常一样给它设置颜色 万万没想到.. ...
- 44. Spring Security FAQ春季安全常见问题
第44.1节,“一般问题” 第44.2节,“常见问题” 第44.3节,“春季安全架构问题” 第44.4节,“常见”如何“请求 44.1 General Questions 第44.1.1节,“Spri ...