字符型(char)数组分配内存时占用多少个字节_char数组占几个字节_OnlyFamiU的博客-程序员宅基地

技术标签: c语言  C语言编程  

1.直接定义的字符串会多占用一个字节
例:char s[]=“abcdefg”;
在实际分配内存时会占用8个字节的内存。多出来的一个字节用来存储"\0"用来表示字符串的结束。

示例程序及运行结果如下:

#include "stdlib.h"
#include "stdio.h"

void main()
{
    
	int i,t;
	char s[]="abcdefg";
	char *p;
	p=s;

	printf("字符串占用 %d 个字节\n\n",t=sizeof(s));

	for(i=0;i<t;i++)
	printf("%c   %x \n",*(p+i),*(p+i));
}

运行结果:
在这里插入图片描述

2.结构体中字符型(char)数组在分配内存时会多分配3个字节
示例程序及运行结果如下:

#include <stdio.h>
#include <stdlib.h>
struct student
{
    
	long no;
	char sex;
	char name[20];
	int age;
	float score;
	struct student *next;
};
struct student11
{
    
	long no;
	char sex;
	char name[20];
	int age;
	float score;
};
void main()
{
    
	struct student ppp={
    20208745,'M',"abcdefghijklmnopqr",23,123.5,NULL};//pp.name 里面装了18个字符
	int i;
	
	printf("输出各种数据类型占用空间大小\n");
	printf("sizeof(long)=%d\r\n",sizeof(long));
	printf("sizeof(char)=%d\r\n",sizeof(char));
	printf("sizeof(int)=%d\r\n",sizeof(int));
	printf("sizeof(float)=%d\r\n",sizeof(float));
	
	printf("\n输出两种结构体数据类型所需存储空间区别\n");
	printf("sizeof(struct student11)=%d\r\n",sizeof(struct student11));
	printf("sizeof(struct student)=%d\r\n",sizeof(struct student));//用于链表数据
	
	printf("\n显示结构体中字符串数组所占内存大小\n");
	printf("sizeof(ppp.name)=%d\r\n",sizeof(ppp.name));//显示PPP结构体里面name字符串所占字节数
	printf("\n\n");
	
	printf("输出数据的起始地址,用来看ppp.name实际占用多少内存\n");
	printf("sex_address=%x\r\n",&ppp.sex);
	printf("name_address=%x\r\n",ppp.name);
	printf("age_address=%x\r\n",&ppp.age);
	printf("age_address-name_address=%d\r\n",(char *)&ppp.age-ppp.name);//相邻存储区字节数差值
	//不同 类型的地址不能直接相减,需对int类型指针进行强制转换
	printf("\n\n");
	
	printf("输出结构体中字符串数组多占用的3个字节内容\n");
	for(i=0;i<23;i++)
	{
    
		printf("%x  %c  %x\n",ppp.name+i,*(ppp.name+i),*(ppp.name+i));//抓取地址里面的内容
	}
	
	printf("\n%s\n\n\n",ppp.name);
}

运行结果如下图。由运行图可知结构体中字符串数组多分配3个字节的结束标志内存。
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/USTLBer/article/details/120205808

智能推荐

HTTP状态码详解1_chenlucong9382的博客-程序员宅基地

状态码 含义 100 客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。 101 服务器已经理解了客户端的请求,并将通过Upgra...

display: none 与 visibility: hidden 的区别_笑望灬星辰的博客-程序员宅基地

display: none 与 visibility: hidden 的区别联系:它们都能让元素不可⻅ 区别:display:none ;会让元素完全从渲染树中消失,渲染的时候不占据任何空间visibility: hidden ;不会让元素从渲染树消失,渲染师元素继续占据空间,只是内 容不可⻅display: none ;是⾮继承属性,⼦孙节点消失由于元素从渲染树消失造成,通过修改⼦孙节点属性⽆法显示visibility: hidden; 是继承属性,⼦孙节点消失由于继承 了 hidden

spring的启动过程03-bean工厂后置处理器_bean工厂的后置处理器什么时候初始化的_三石行的博客-程序员宅基地

概述:在spring的启动过程中,bean工厂创建成功并加载所有的XML资源文件生成BeanDefinitions集合后,实例化所有singlelonBean对象之前,需要对beanDefinition做额外的操作,bean工厂后置处理器就发挥重要作用了。一个经常用到的场景:业务代码中或者XML文件中配置bean属性的值经常采用${...}占位符,把参数写入properties文件中,xm_bean工厂的后置处理器什么时候初始化的

[天天向上] 学习方法论-修炼更好的自己_万俟淋曦的博客-程序员宅基地

我们一直都在努力成为更好的自己,那么有没有什么有效的方法呢?这里分享一下我的方法。首先是方法论。1. 目标目标是一个很强大的东西,可以给我们动力,让我们不知疲倦。当一个目标对你非常重要时,目标就变成了寄托,没有了这个寄托,甚至能让你感觉生活没有意义。所以一切的开始就是树立一个目标,一个明确的,坚定的目标。经常有人说,一学习就犯困,一上课就走神,这就是没有坚定的明确的目标。借用汤家凤老师的话,“你怎么睡得着的?你这个年龄段,你这个阶段,你睡得着觉?有点出息没有?”如果你有坚定的目标,不用说学习时,.

educoder-HDFS和MapReduce综合实训_hdfs和mapreduce综合实训四关_刘向阳啊的博客-程序员宅基地

第1关:WordCount 词频统计import java.io.IOException;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.ha_hdfs和mapreduce综合实训四关

随便推点

pythonlinux mysql驱动安装,Linux下安装python,mysql-程序员宅基地

linux 安装Python31.python下载请在终端输入如下命令:cd /homewget http://cdn.npm.taobao.org/dist/python/3.6.5/Python-3.6.5.tgz说明:这句话的作用主要是用wget软件(初学者请自行了解次软件,以后会经常用到)从一个指定的URL下载文件。其格式为:wget 空格 URL地址。而下载目录就是当前目录,所以需要cd...

微服务架构的理论基础 - 康威定律(转)_weixin_34417183的博客-程序员宅基地

摘要: 可能出乎很多人意料之外的一个事实是,微服务很多核心理念其实在半个世纪前的一篇文章中就被阐述过了,而且这篇文章中的很多论点在软件开发飞速发展的这半个世纪中竟然一再被验证,这就是康威定律。概述微服务是最近非常火热的新概念,大家都在追,也都觉得很对,但是似乎没有很充足的理论基础说明这是正确的,给人的感觉是 不明觉厉 。前段时间看了Mike Amundsen《远距离条件下的康威定律...

opensource项目_The Opensource.com 11月预览_cumj63710的博客-程序员宅基地

opensource项目 欢迎来到Opensource.com的11月! 但是在我们完全进入这个新月之前,我们必须大声疾呼上个月发生的事情。 万物开放 今年的万物公开赛是迄今为止最好的! Opensource.com有一个展位,一个照相亭,卡车司机帽子,并在午餐会上主持了Lightning Talk系列节目(视频即将推出)以及许多其他令人兴奋的冒险活动。 我们今年编写的“万物公开演讲者系...

I/0复习_∵一i i、∴占义ypq、|∵v、00? 、5_ocean1010的博客-程序员宅基地

Io包中类的层次关系图输入流:程序中可以连续读取字节的对象。用InputStream类表示。输出流:程序能向其中连续写入字符的对象。用OutputStream类表示。字节输入流类:字节输出流类:红色部分没有对应的输出流。字符输入流类:字符输出流类:红色部份没有。 java字符编码1. ASCⅡ(美国标准信息交换码):一个字符对应一个字节。字节的最高位都为0,数字都在0-127之间。2. GBK(国标码):原来的ASCⅡ字符的编码保持不变,仍用一个字节表示。每一个中文字符都用两个字节表示,为了将一个_∵一i i、∴占义ypq、|∵v、00? 、5

fs文件系统_weixin_30871293的博客-程序员宅基地

本文转载于:http://blog.csdn.net/wade333777/article/details/69218537一、概述Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node 导入文件系统模块(fs)语法如下所示:var fs = require("fs")API文档:http://www.runoob.com/nodejs/node...

解决 Ubuntu 14.04 无法调节屏幕亮度的问题_ubuntu14.04 调节亮度不起作用_epsilon1的博客-程序员宅基地

装好Ubuntu 14.04 后,最喜欢先打开的就是“系统设置”了,因为想把它先初步调节成自己喜欢的样式(当然,想进一步调节的话,就需要借助其他软件了),然后再去慢慢改造它。Ubuntu默认的屏幕亮度为最大,看着很刺眼,所以就想调低一点,但不管怎么调都没什么变化,所以就暂时没去管他,结果,就把它给淡忘了,今天刚好有空,索性就去找了一下解决方法。看来大家都遇到了这个问题,所以解决方法有很多,下面我就_ubuntu14.04 调节亮度不起作用

推荐文章

热门文章

相关标签