为您找到与c语言中的sizeof相关的共166个结果:
c语言中sizeof的用法的用法你知道吗?下面小编就跟你们详细介绍下c语言中sizeof的用法的用法,希望对你们有用。
sizeof其实就是一个运算符,和那些+,-一样的东西,在程序编译的时候进行解析转换。虽然我们经常见到sizeof后面跟着个小括号,长得和函数差不多,但它和函数完全是两码事。
2,有什么用?
sizeof其实就是用于告诉我们编译器在为某一特定数据或者某种数据类型的数据在存储空间中开辟空间时,开辟的空间大小,以字节为单位。
3,怎么用?
sizeof(类型),或者sizeof(变量)都可以,得到的就是类型或者变量的存储空间。当对变量用的时候,也可以没有括号,直接 sizeof 变量,但一般不用(我一般都是只记一种通用的用法……)。
4,用的时候要注意什么?
(1)sizeof返回的占用空间大小是为这个变量开辟的大小,而不只是它用到的空间。和现今住房的建筑面积和实用面积的概念差不多。所以对结构体用的时候,大多情况下就得考虑字节对齐的问题了。
(2)对位域成员等连编译器都无法确定存储空间的东西不能用。这个应该比较好理解,因为sizeof返回的都是以字节为单位的数据,你让它去求那些以位为单位的大小,这不是存心难为编译器嘛。所以编译器采用的方案是统一不受理,即使你说你刚好是8位,占一个字节,编译器也不理你。
(3)sizeof返回的数据类型是unsigned int。因为C中不同类型数据混合运算时的自动转换,有时候不注意的话可能会出问题,具体可以参照下面的程序例子。
(4)要注意数组名和指针变量的区别。通常情况下,我们总觉得数组名和指针变量差不多,但是在用sizeof的时候差别很大,对数组名用sizeof返回的是整个数组的大小,而对指针变量进行操作的时候返回的则是指针变量本身所占得空间,在32位机的条件下一般都是4。而且当数组名作为函数参数时,在函数内部,形参也就是个指针,所以不再返回数组的大小。
5,实例分析
源码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<stdio.h>
int main()
{
int iVal = 3;
printf("The size of type int is %d ", sizeof(int));
printf("The size of iVal is %d", sizeof(iVal));
printf("The size of iVal is %d", sizeof iVal);
if((iVal - sizeof(int)) < 0)
{
printf("The return type is int");
}
else
{
printf("The return type is unsigned int");
}
char chArrayCon[7];
char *chp;
chp = chArrayCon;
printf("The size of chArrayCon is %d, The size of chp is %d", sizeof(chArrayCon), sizeof(chp));
int iArraySize = 3;
char chArrayVar[iArraySize];
printf("The size of chArrayVar is %d", sizeof(chArrayVar));
return 0;
}
运行结果:
The size of type int is 4
The size of iVal is 4
The size of iVal is 4
The return type is unsigned int
The size of chArrayCon is 7, The size of chp is 4
The size of chArrayVar is 3
结果分析:
代码第一部分主要就是简单的表示了一下用法。
第二部分说明了注意事项的第三项。按说,iVal的值是3,减4的话应该是-1,小于0,输出的应该是"he return type is int"。但是由于当int和unsigned int一起运算时,会默认变成unsigned int,所以结果会是一个很大的unsigned int类型的数,是大于0的。
代码第三部分就简单说明了数组名和指针变量的区别,即使你把指针变量指向数组名,编译器依然能够分辨出区别。
以上讲述的都没有考虑在C99标准下的情况。因为在C99标准下有种特殊情况,那就是不定长数组的使用。当对不定长数组名使用sizeof的话,返回的也是整个数组的大小,就像实例中第四块代码一样。但是这并不是在编译阶段执行的,而是在程序运行阶段执行的。因为在编译的时候,编译器一般不知道变量的值是多少。(当然例子中我直接赋值3,可能不方便理解,可以假想iArraySize是通过scanf来获得实际数值的,然后再声明数组的)。对于这种情况,实际中应用的并不多,大家可以当做特殊情况对待即可,或者直接忽略掉也行……
6总结
其实sizeof的作用就是告诉我们分配给变量的“建筑面积”的大小,只要记得这一点应该就够了,不管这个变量类型是普通的整型数据,还是结构体,共用体,枚举……记住这一点后,当我们再去想知道sizeof对不同数据类型操作返回的值到底是什么的时候,只需搞明白那些数据类型到底要消耗多少“建筑面积”就可以啦!
浏览量:2
下载量:0
时间:
浏览量:2
下载量:0
时间:
语言是人类最重要的交际工具,是人们进行沟通交流的主要表达方式。那么你知道语言的英文是什么吗?下面读文网小编为大家带来语言的英文表达和相关例句,供大家参考学习。
spoken and written language;
语言与文字
working language;
工作语言
official language
正式语言
assembly language
汇编语言
浏览量:6
下载量:0
时间:
网络语言是指产生并运用于网络的语言,具有高效、便捷、准确的特征。网络语言是从网络中产生或应用于网络交流的一种语言 ,越来越成为人们网络生活中必不可少的一部分。那么你知道网络语言用英语怎么说吗?下面跟着读文网小编一起来学习一下吧。
1. English will possibly decline in use as the major Internet language.
英语作为主要的网络语言,其使用有可能会下降.
2. Laurie Anderson is giving new meaning to the developing language of cyberspace.
罗莉安德森给了网络语言的发展下了新定义.
3. The use of partial tone in network language makes It'show charming.
而许多网络词语和语句正是运用了谐音的手段,使网络语言呈现出其特有的魅力.
4. The network language fancy numberless as the sand, enumerate.
网络语言中的奇思异想可谓多如牛毛, 不胜枚举.
5. The popularization of computers and network brought about the net language.
计算机与网络的普及,催生了网络语言.
6. At last the paper discusses the development and standardization of network language.
最后,文章对网络语言的发展和规范化问题进行了探讨.
7. Many characteristics of internet language implicate post - modern values and cultural connotations.
摘要网络语言的许多特点暗合了后现代的价值观念和文化内涵.
8. Language chat and convenient to use the network!
使用网络语言聊天又方便!
9. Cyber language not only enriches our school life but also eases the pressures of studying.
网络语言不仅丰富了我们的校园生活同时也减轻课业压力.
10. On the definition of language network really different people - see, people from different focus definition.
作为一种新的语言现象, 网络语言越来越引起人们的关注.
11. The net language has been drawing more and more attention for its peculiarities.
网络语言作为语言中的一个新生事物,已受到越来越多的人的关注.
12. Using a computer keyboard is the special character of network language dedicating a characteristic.
利用计算机键盘上的特殊字符表情达意也是网络语言的一个特点.
13. XML, which will act as the next generation WEB language, has gained more success.
XML作为下一代的网络语言, 其应用更是大行其道.
14. Bengchu a few and the language network, and that does not match the times.
并且不时的蹦出几句网络语言, 和与那个时代不相符的东西.
15. With the prevalence of cyber language are increasingly heated arguments over its nature and semantic feature.
随着网络语言的流行,关于其性质和语义特征的争论愈发激烈.
浏览量:3
下载量:0
时间:
肢体语言是指通过头、眼、颈、手、肘、臂、身、胯、足等人体部位的协调活动来传达人物的思想,形象地借以表情达意的一种沟通方式。那么你知道肢体用英语怎么说吗?下面来学习一下吧。
1. Her expression is concerned but her body-language does not correspond.
她满脸关切之情,但她的肢体语言并非如此。
2. His gestures were economical, his words generally mild.
他的肢体语言极尽简化,措词总体温和。
3. Body language can also be used to attract members of the opposite sex.
肢体语言也可以用来吸引异性的注意。
4. Read their body language. Are their eyes wandering or are they drumming the desk with their fingers?
解读他们的肢体语言。他们的眼睛游离不定吗,抑或他们在用手指不停地敲打桌子?
5. Open body language makes you appear more approachable and trustworthy.
开放式肢体语言让你看起来更加得平易近人和可信赖.
6. There is no advice on how to use your body language.
如何使用肢体语言没有定式.
7. Finally, the transcript does not carry inflections of voice and body language.
最后, 记录手本其实不反映声音和肢体语言.
8. How would you do if you are desertd to an isolated island?
从他的面部表情和肢体语言你会看出他是否想要聊天.
9. Using the right body language helps you communicate more assertively.
使用正确的肢体语言会帮助你更有主张力的交流.
10. Use the right body language to get your message across.
用正确的肢体语言帮助传达信息.
11. Mr Obama's body language was easy without being ingratiating.
奥巴马的肢体语言既随和,又无逢迎之意.
12. Body language is the quiet, secret and most powerful language of all!
肢体语言是安静的, 秘密的,并且也是所有的语言中最强有力的!
13. People want to see your face, expressions and read your body language.
人们想要看到你的面孔, 看到并阅读你的肢体语言.
14. The Chinese people don't use body language as often as foreigners do.
中国人并不像外国人那样经常使用肢体语言.
15. This nonverbal way of communication is called body language.
这种不用语言沟通的方法叫做肢体语言.
浏览量:2
下载量:0
时间:
C语言是一门实践性和动手能力要求很高的大学主干课程,但是C语言实验课的教学一直不受重视,教学效果也不太理想。下面小编就跟你们详细介绍下c语言中else的用法,希望对你们有用。
if(表达式)
语句1;
else
语句2;
其语义是:如果表达式的值为真,则执行语句1,否则执行语句2 。其执行过程可表示如下。
#include <stdio.h>
int main(void){
int a, b;
printf("input two numbers: ");
scanf("%d%d",&a,&b);
if(a>b)
printf("max=%d",a);
else
printf("max=%d",b);
return 0;
}
输入两个整数,输出其中的大数。改用if-else语句判别a,b的大小,若a大,则输出a,否则输出b。
浏览量:13
下载量:0
时间:
C语言作为一门新型高级编程语言,在计算机软件编程中具有较为广泛的应用和实现。下面小编就跟你们详细介绍下c语言中const的用法,希望对你们有用。
const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。
虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题。
问题:const变量 & 常量
为什么我象下面的例子一样用一个const变量来初始化数组,ANSI C的编译器会报告一个错误呢?
const int n = 5;
int a[n];
答案与分析:
1)、这个问题讨论的是“常量”与“只读变量”的区别。常量肯定是只读的,例如5, “abc”,等,肯定是只读的,因为程序中根本没有地方存放它的值,当然也就不能够去修改它。而“只读变量”则是在内存中开辟一个地方来存放它的值,只不过这个值由编译器限定不允许被修改。C语言关键字const就是用来限定一个变量不允许被改变的修饰符(Qualifier)。上述代码中变量n被修饰为只读变量,可惜再怎么修饰也不是常量。而ANSI C规定数组定义时维度必须是“常量”,“只读变量”也是不可以的。
2)、注意:在ANSI C中,这种写法是错误的,因为数组的大小应该是个常量,而const int n,n只是一个变量(常量 != 不可变的变量,但在标准C++中,这样定义的是一个常量,这种写法是对的),实际上,根据编译过程及内存分配来看,这种用法本来就应该是合理的,只是 ANSI C对数组的规定限制了它。
3)、那么,在ANSI C 语言中用什么来定义常量呢?答案是enum类型和#define宏,这两个都可以用来定义常量。
问题:const变量 & const 限定的内容
下面的代码编译器会报一个错误,请问,哪一个语句是错误的呢?
typedef char * pStr;
char string[4] = "abc";
const char *p1 = string;
const pStr p2 = string;
p1++;
p2++;
答案与分析:
问题出在p2++上。
1)、const使用的基本形式: const char m; 限定m不可变。
2)、替换1式中的m, const char *pm; 限定*pm不可变,当然pm是可变的,因此问题中p1++是对的。
3)、替换1式char, const newType m; 限定m不可变,问题中的charptr就是一种新类型,因此问题中p2不可变,p2++是错误的。
问题:const变量 & 字符串常量
请问下面的代码有什么问题?
char *p = "i'm hungry!";
p[0]= 'I';
答案与分析:
上面的代码可能会造成内存的非法写操作。分析如下, “i'm hungry”实质上是字符串常量,而常量往往被编译器放在只读的内存区,不可写。p初始指向这个只读的内存区,而p[0] = 'I'则企图去写这个地方,编译器当然不会答应。
问题:const变量 & 字符串常量2
请问char a[3] = "abc" 合法吗?使用它有什么隐患?
答案与分析:
在标准C中这是合法的,但是它的生存环境非常狭小;它定义一个大小为3的数组,初始化为“abc”。注意,它没有通常的字符串终止符'