字符数组可以用sizeof嘛(C语言的字符数组中sizeof()操作符的计算问题,请帮忙进来看看!)

本文目录
C语言的字符数组中sizeof()操作符的计算问题,请帮忙进来看看!
char s = ’\0’; 属于内存越界操作
sizeof不关心’\0’,它只跟变量定义有关,即使s里存储的都是’\0’,sizeof(s)还是5
"abcde"是个常量字符串,c的定义里自动给常量字符串加了结束符’\0’.所以它相当于{ ’a’, ’b’, ’c’, ’d’, ’e’, ’\0’ }
char c = "abcde"; 是根据常量字符串自动推导c的大小,这里sizeof("abcde") = 6,所以这句等价于
char c = "abcde";
c语言 字符数组 字符指针 sizeof strlen 的区别
简单概括,strlen()返回的是字符数组或者字符指针中的元素个数,sizeof返回的是字符数组中所有元素所占的总字节数,对于字符指针,返回的只是指针所占的字节数,32位系统上都是4字节。具体来说有如下几点区别:
1.
sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned
int类型。该类型保证能容纳实现所建立的最大对象的字节大小。
2.
sizeof是算符,strlen是函数。
3.
sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以’’\0’’结尾的。
4.
数组做sizeof的参数不退化,传递给strlen就退化为指针了。
5.
大部分编译程序在编译的时候就把sizeof计算过了,是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因。
char
str="0123456789";
//
str是编译期大小已经固定的数组
int
a=strlen(str);
//
a=10;
//strlen()在运行起确定,计算的是实际长度
int
b=sizeof(str);
//
而b=20;
//sizeof()在编译期确定,str的类型是int,计算的是占据内存的大小
6.
strlen的结果要在运行的时候才能计算出来,是用来计算字符串的实际长度,不是类型占内存的大小。
7.
sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。
char
c;
sizeof
c;
//变量名可以不加括弧
8.
当适用于一个结构类型或变量,
sizeof
返回实际的大小,
当适用一静态地空间数组,
sizeof
归还全部数组的尺寸。
sizeof
操作符不能返回动态地被分派了的数组或外部的数组的尺寸

更多文章:
全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)
2026年9月7日 17:10
matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)
2026年9月7日 16:30
oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)
2026年9月7日 15:30
电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)
2026年9月7日 12:20
scrollthrough意思(“scroll”是什么意思)
2026年9月7日 08:00
怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)
2026年9月7日 06:30



