C语言学习(sizeof())总结
C语言学习总结
关仁杰
#include<stdio.h>
int main()
{
printf("Hello word\n");
return 0;
}
这个小程序是C语言学习者再熟悉不过的了。
但是从"#"开始到"}"结束,总共不到60个字符,却含金量特别高。
对于很大一部分学习者可以用一位老师的话来形容——往往知其然,不知其所以然也。
例如,这里的“#include<stdio.h>”,它为什么要用在这里,“#”是什么意思,“include”又是干嘛的,还有“stdio.h”呢?
其实,引用前面一段小程序,我只是想说,在深入学习C语言后,我自己颠覆了我对C语言的看法。
此前,我觉得C语言再简单不过了,你看,头文件、函数名、包含语句块的“{}”、函数语句。
不过就这么多的东西,我嚣张不?呵呵,中国有句俗话说的就是我。
幸亏,我没有把嚣张表现出来。
而是悄悄地找了一些关于C语言的材料来研读。
不看不知道一看吓一跳,原来C语言这么博大精深啊!以前真是对C语言了解太少了,我连我自己都嘲笑我以前的无知和狂妄!呵呵,还是谦虚点学习C语言吧!
从C语言基础到C语言高级编程我更深层次的了解了C语言。
下面列举几个简单的例子来说明我在这个过程中的收获。
#include<stdio.h>
int main()
{
int i=10;
int arr[10];
int *p;
p = arr;
char *p1;
Char a[10];
p1 = a;
printf ("%d\n",sizeof(int));
printf ("%d\n",sizeof(i));
printf ("%d\n",sizeof(p));
Printf ( "%d\n",sizeof(*p));
printf ("%d\n",sizeof(arr));
printf ("%d\n",sizeof(a));
printf ("%d\n",sizeof(p1));
printf ("%d\n",sizeof(*p1));
}
相信稍微熟悉C语言的人都能一下子给出程序的运行结果。
下面就是正确答案:
4
4
4
4
40
10
4
知道我第一次看见类似的程序的时候是说明感觉吗?我毫不犹豫的蒙了!
printf ("%d\n",sizeof (int )); 什么跟什么啊,完全看不懂(虽然之前学过sizeof,但没有深层次的理解它)!其实,sizeof可以这样理解,size of 就是某某大小或长度, sizeof(int)就是求一个int型的长度,一个字节是8位,所以用32位的编译器的结果就是4了,而这里sizeof(i)打印的结果并不是10,因为sizeof(i)求的是i本身所占的字节的大小,因为i是int型的所以在这里sizeof(i)结果就是4。
而
sizeof(p)却不可以这样理解,因为p是这样定义的int *p,p是指针变量,存放的是一个地址,在32位机里面,一个地址是4字节,所以sizeof(p)是4、sizeof(p1)结果是1。
然而为什么sizeof(*p)为什么也是4呢?因为*p代表的是取p所指向的地址的值,这里p所指向的是int型值,所以其结果也是4,这样为什么sizeof(*p1)结果是1就不难理解了。
下面我再解释我对sizeof(arr)的理解。
这里arr数组的定义为:int arr [10],arr本身是int型的,又因为它有10个元素,每个元素必须也是int型的,所以sizeof (arr )结果为
4*10=40;那么sizeof(a)的结果是10 也就可以清楚了。
与sizeof()功能类似的还有strlen()不过后者是用于字符串的。
想说的还有更多,总之,我以前的C语言观被我自己颠覆了,由于今天时间有限暂时就写到这里吧,待续……。
sizeof 函数
sizeof 函数sizeof函数是C语言中的一个运算符,用于获取变量或数据类型所占用的内存空间大小。
在C语言中,sizeof函数的返回值是一个无符号整数,表示所占用的字节数。
本文将从sizeof函数的用法、计算方法、注意事项等方面进行详细介绍。
一、sizeof函数的用法sizeof函数的用法非常简单,可以用于获取变量或数据类型所占用的内存空间大小。
其语法格式如下:sizeof(表达式)其中,表达式可以是变量、常量、数据类型等。
二、sizeof函数的计算方法sizeof函数的计算方法是根据数据类型来确定所占用的字节数。
不同的数据类型在内存中占用的空间大小是固定的,因此sizeof函数可以根据数据类型来返回相应的字节数。
例如,sizeof(char)返回的是1,因为char类型占用1个字节;sizeof(int)返回的是4,因为int类型占用4个字节;sizeof(float)返回的是4,因为float类型占用4个字节;sizeof(double)返回的是8,因为double类型占用8个字节。
需要注意的是,sizeof函数返回的是字节数,而不是位数。
一个字节等于8个位,所以sizeof函数返回的结果可以用来判断数据类型的位数。
三、sizeof函数的注意事项1. sizeof函数只能用于静态类型,不能用于动态类型。
也就是说,sizeof函数不能用于动态分配的内存,比如指针指向的内存空间。
2. sizeof函数不能直接用于函数、数组和void类型。
对于函数和void类型,可以使用指针来获取其所占用的内存空间大小;对于数组,可以使用sizeof(数组名)来获取数组的总大小。
3. sizeof函数的结果是一个常量表达式,在编译时就能得到结果,因此sizeof函数的参数不会被执行。
4. sizeof函数返回的结果是一个无符号整数,可以用%lu或%zu格式输出。
四、sizeof函数的应用举例1. 获取变量的大小```cint num;size_t size = sizeof(num);printf("变量num的大小为:%zu\n", size);```2. 获取数据类型的大小```csize_t size1 = sizeof(char);size_t size2 = sizeof(int);size_t size3 = sizeof(float);size_t size4 = sizeof(double);printf("char类型的大小为:%zu\n", size1);printf("int类型的大小为:%zu\n", size2);printf("float类型的大小为:%zu\n", size3);printf("double类型的大小为:%zu\n", size4);```3. 获取数组的大小```cint arr[10];size_t size = sizeof(arr);printf("数组arr的大小为:%zu\n", size);```5. 获取指针所指向的类型的大小```cint* ptr;size_t size = sizeof(*ptr);printf("指针ptr所指向的类型的大小为:%zu\n", size);```五、总结sizeof函数是C语言中用于获取变量或数据类型所占用的内存空间大小的一个非常实用的运算符。
sizeof用法
sizeof用法sizeof是C/C++语言中非常常用的一个操作符,用于计算数据类型或变量在内存中所占的字节数。
本文将从使用方法、注意事项、应用场景等方面进行详细讲解。
1.使用方法sizeof操作符有两种用法:(1)计算数据类型在内存中所占的字节数语法:sizeof(数据类型)例子:sizeof(int)(2)计算变量在内存中所占的字节数语法:sizeof(变量名)例子:int a; sizeof(a)2.注意事项(1)sizeof操作符计算的字节数只与数据类型相关,与具体的实现相关性较小。
(2)对于数组,sizeof计算的是整个数组所占的字节数,而不是指向数组首元素的指针所占的字节数。
(3)对于指针,sizeof计算的是指针本身所占的字节数,而不是指针指向对象所占的字节数。
(4)通过结构体、共用体等数据类型可以自定义复合类型,sizeof计算的是整个数据类型所占的字节数。
(5)sizeof操作符是在编译时计算,不会对程序运行造成任何影响。
3.应用场景(1)动态内存分配在进行动态内存分配时,需要根据数据类型的大小决定分配的内存空间大小。
使用sizeof操作符可以方便地获取数据类型的大小,从而确定需要分配的内存大小。
(2)指针运算对指针进行加减运算时需要知道指针指向对象的大小,从而确定加减的偏移量。
使用sizeof操作符可以获取指针指向对象的大小。
(3)复合类型处理在处理复合类型数据时,需要知道整个数据类型所占的字节数,从而方便进行内存分配、指针运算等操作。
使用sizeof操作符可以获取复合类型数据的大小。
(4)调试和分析在进行程序调试和性能分析时,需要了解数据类型在内存中的存储情况,使用sizeof操作符可以获取数据类型在内存中所占的字节数,进而方便进行调试和分析。
总之,sizeof操作符是C/C++语言中非常重要的操作符,在程序开发、调试和分析中都具有重要作用。
需要注意的是,在使用sizeof操作符时需要注意相关的注意事项,才能正确无误地进行操作。
C语言的sizeo解析
C语言的sizeo解析C语言的sizeo解析C语言有丰富的数据结构和运算符。
包含了各种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。
以下是店铺为大家搜索整理的C语言的sizeo解析,希望能给大家带来帮助!一、sizeof的概念sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。
它并不是函数。
sizeof操作符以字节形式给出了其操作数的存储大小。
操作数可以是一个表达式或括在括号内的类型名。
操作数的存储大小由操作数的类型决定。
二、sizeof的使用方法1、用于数据类型sizeof使用形式:sizeof(type)数据类型必须用括号括住。
如sizeof(int)。
2、用于变量sizeof使用形式:sizeof(var_name)或sizeof var_name变量名可以不用括号括住。
如sizeof (var_name),sizeof var_name等都是正确形式。
带括号的用法更普遍,大多数程序员采用这种形式。
注意:sizeof操作符不能用于函数类型,不完全类型或位字段。
不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。
如sizeof(max)若此时变量max定义为int max(),sizeof(char_v) 若此时char_v定义为char char_v [MAX]且MAX未知,sizeof(void)都不是正确形式。
三、sizeof的结果sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
1、若操作数具有类型char、unsigned char或signed char,其结果等于1。
ANSI C正式规定字符类型为1字节。
2、int、unsigned int 、short int、unsigned short 、long int 、unsigned long 、float、double、long double类型的sizeof 在ANSI C中没有具体规定,大小依赖于实现,一般可能分别为2、2、2、2、4、4、4、8、10。
c语言的sizeof函数
c语言的sizeof函数sizeof函数是C语言中常用的一个操作符,用于返回一些变量或类型的大小,单位为字节。
它是一个编译时运算符,返回值是一个常量表达式,不需要运行时计算。
sizeof操作符可以用于任何数据类型,并且也可以用于结构体、联合体、数组等复杂类型。
本文将详细介绍sizeof函数的功能、用法和实例,以帮助读者更好地理解和使用它。
1. sizeof函数的功能sizeof函数的主要功能是返回操作数的大小,即占用的字节数。
它可以用于以下方面:a) 检查变量的大小:可以用sizeof函数来检查不同类型的变量所占用的内存大小。
例如,可以使用sizeof(int)来获取int类型变量的大小。
b) 计算数组的大小:可以使用sizeof函数来计算数组的大小。
例如,可以使用sizeof(array)来获取array数组的大小。
c) 计算结构体、联合体的大小:可以使用sizeof函数来计算结构体或联合体所占用的内存大小。
例如,可以使用sizeof(struct MyStruct)来获取MyStruct结构体的大小。
d) 动态内存分配:可以使用sizeof函数来确定在动态内存分配中所需的内存大小。
例如,可以使用sizeof(int) * n来为n个整数分配内存。
2. sizeof函数的用法sizeof函数的基本用法为sizeof(操作数)。
其中,操作数可以是以下类型:a) 数据类型:可以直接使用sizeof(数据类型)来获取该类型变量的大小。
例如,sizeof(int)。
b) 变量名:可以使用sizeof(变量名)来获取该变量所占用的内存大小。
例如,sizeof(num)。
c) 表达式:可以使用sizeof(表达式)来获取表达式的结果所占用的内存大小。
例如,sizeof(a + b)。
d) 指针:可以使用sizeof(指针变量)来获取指针变量所占用的内存大小,而不是它指向的对象的大小。
例如,sizeof(ptr)。
C语言中sizeof()的用法
C语言中sizeof()的用法2008-12-31 09:45:35.0 来源:51CTO关键词:C语言要参加软件研发的笔试(C/C++)几乎都会涉及到sizeof()的用法,我昨天也遇到了,有的也会,但是真正sizeof()的核心还是没有领会,今天上网,无聊中就看到了详细的sizeof()的阐述,现在分享给大家。
------------sizeof----------------sizeof 一般形式为:sizeof(object),也可以sizeof var_char,不过大部分programer 习惯用sizeof()。
对象可以是表达式或者数据类型名,当对象是表达式时,括号可省略。
sizeof是单目运算符,其运算符的含义是:求出对象在计算机内存中所占用的字节数。
一般来讲,不同的机器,运行不同的对象是不一样的,当目前几乎所有的机器都是32位,很少16位的,所以一般考试都是基于32位的window和linux的。
C语言中数据类型不多。
1.整数型的:short,int,long(我没有考虑符号问题),一般c语言书上讲,int是2个字节的,即16位,范围是-32768-32767,long是4个字节,范围是-2^32---2^32-1。
当时在xp上运行sizeof(int)的时候,会output 4.这就是32位的原因。
sizeof(long)也是4.如下:#include "stdio.h"#include "string.h"#include "stdlib.h"int main(){short int sa=10;int a=10;long la=10;float f = 20;double d=20;char ch=''c'';char str[]="ABC";char *p=str;struct str{double d;char ch;int data;}str_wu;struct str1{char ch;double d;int data;}str_wu1;printf("sizeof(short):%d\n",sizeof(sa));printf("sizeof(int):%d\n",sizeof(a));printf("sizeof(long):%d\n",sizeof(la));printf("sizeof(float):%d\n",sizeof(f));printf("sizeof(double):%d\n",sizeof(d));printf("sizeof(char):%d\n",sizeof(ch));printf("sizeof(string):%d\n",sizeof(str));printf("sizeof(point address):%d\n",sizeof(p));printf("sizeof(Point):%d\n",sizeof(*p));printf("sizeof(Struct):%d\n",sizeof(str_wu));printf("sizeof(Struct):%d\n",sizeof(str_wu1));system("pause");}因而int,short的sizeof结果是一样的额。
sizeof在c语言中的用法 (2)
sizeof在c语言中的用法一、sizeof在C语言中的用法简介在C语言中,sizeof是一个用来获取数据类型或变量在内存中所占字节数的运算符。
它返回一个无符号整数值,表示所给参数的大小。
sizeof可以用于各种数据类型,包括基本数据类型(如int、float等)、指针、数组和结构体等。
二、sizeof用法详解1. 获取基本数据类型的大小使用sizeof运算符可以获取C语言中各种基本数据类型的大小。
例如,sizeof(int)将返回该机器上int类型所占的字节数。
这对于编写可移植性强的代码非常有用。
2. 获取数组大小通过使用sizeof运算符,可以获取数组在内存中所占空间的大小。
例如,如果有一个整型数组arr,则sizeof(arr)将返回该数组所占的总字节数。
3. 获取指针变量的大小当使用sizeof运算符计算指针变量时,它将返回指针变量本身所占空间的大小,并不会计算指针所引用对象的大小。
这是因为指针只是一个地址值,在32位操作系统上通常占用4个字节,在64位操作系统上通常占用8个字节。
4. 获取结构体大小通过使用sizeof运算符,可以获取结构体在内存中所占空间的大小。
结构体由多个字段组成,而每个字段又可以是不同的数据类型。
sizeof(struct_name)将返回该结构体所占的总字节数。
5. 计算变量的大小sizeof运算符可以用于计算变量在内存中所占空间的大小。
例如,sizeof(variable)将返回变量所占的字节数。
这在动态分配内存或者进行数据传输时非常有用。
6. 获取字符串长度使用sizeof运算符可以获取字符串(字符数组)在内存中所占空间的大小,包括末尾的空字符'\0'。
例如,如果有一个字符数组str,则sizeof(str)将返回该数组所占空间的总字节数。
7. 特殊情况注意事项在使用sizeof运算符时需要特别注意一些情况。
首先,在计算指针变量时,需要明确指针类型,因为不同类型的指针在不同平台上可能占用不同大小的空间。
sizeof 计算表达式
sizeof 计算表达式sizeof 是C语言中的一个操作符,用于计算变量或数据类型所占用的字节数。
通过sizeof 可以在编程中准确地获取变量或数据类型的字节大小,从而在内存管理和数据处理中起到重要的作用。
在C语言中,sizeof 是一个单目运算符,用于计算操作数的字节大小。
sizeof 可以用于计算各种数据类型的字节大小,包括基本数据类型、数组、结构体等。
下面是几个常见的sizeof 用法示例:1. 计算基本数据类型的字节大小:sizeof(int):计算int 类型的字节大小,一般为4个字节。
sizeof(float):计算float 类型的字节大小,一般为4个字节。
sizeof(double):计算double 类型的字节大小,一般为8个字节。
sizeof(char):计算char 类型的字节大小,一般为1个字节。
2. 计算数组的字节大小:int arr[5] = {1, 2, 3, 4, 5};int size = sizeof(arr); // 计算数组arr 的字节大小,一般为20个字节(5个int 类型元素,每个元素占用4个字节)。
3. 计算结构体的字节大小:struct Student {int id;char name[20];float score;};struct Student stu;int size = sizeof(stu); // 计算结构体stu 的字节大小,一般为28个字节(4个字节的int 类型,20个字节的char 数组,4个字节的float 类型)。
sizeof 运算符返回的结果是一个整数值,表示操作数所占用的字节数。
sizeof 运算符在编译时求值,不会对操作数进行实际计算,因此可以用于在程序中动态获取数据类型的字节大小。
需要注意的是,sizeof 运算符计算的是类型的字节大小,而不是变量的实际大小。
对于指针类型的变量,sizeof 运算符计算的是指针本身的字节大小,而不是指针所指向的数据类型的字节大小。
c语言中sizeof的含义
c语言中sizeof的含义
在C语言中,sizeof是一个用于计算数据类型或变量占用字节大小的运算符。
它可以被用于计算任何数据类型、变量或表达式的大小。
sizeof运算符返回的结果
是一个无符号整数,表示指定对象所占用的字节数。
使用sizeof运算符可以帮助程序员在编写代码时更好地控制和管理内存。
在计
算数据类型的大小时,它会考虑编译器对类型所做的对齐和填充处理。
这意味着sizeof运算符返回的结果可能会比直观的数据类型大小略大。
sizeof运算符主要有两种用法:
1. sizeof(数据类型)
这种用法可以用来计算指定数据类型所占用的字节数。
例如,sizeof(int)将返
回整数类型(int)在当前平台上所占用的字节数。
这对于确定数据类型的字节大小非
常有用,特别是在编写与底层内存相关的代码时。
2. sizeof(变量或表达式)
这种用法将返回指定变量或表达式的字节数。
例如,如果有一个整数变量x,我们可以使用sizeof(x)来计算变量x所占用的字节数。
同样地,我们也可以使用sizeof(x + 1)来计算表达式(x + 1)的字节数。
需要注意的是,sizeof运算符在编译时计算大小,而不是运行时。
这意味着它
可以用于计算静态分配的数组大小,但无法用于动态分配的内存块的大小。
总结起来,C语言中的sizeof运算符用于计算数据类型、变量或表达式所占用
的字节数。
它是一个在编译时计算大小的运算符,可以帮助程序员更好地管理内存。
在编写底层或与内存相关的代码时,了解和正确使用sizeof运算符非常重要。
c语言中sizeof的用法
c语言中sizeof的用法1. sizeof()函数是C语言中最常用的一个内置(built-in)函数,它可以获取指定变量或者类型的大小,单位是字节(byte)。
这个函数可以用在任何表达式中,可以通过把函数放入括号中可以获得其结果,比如:a = sizeof (int);2. sizeof()函数可以获取宏定义(macro definition)、数据类型、结构体(struct)和数组的大小,比如:#define MAXSIZE 100 //宏定义变量struct student {char name[20];int grade;};char c[] = "hello world";3. sizeof()函数的两种用法:(1)通过变量作为参数:int a = 10;b = sizeof (a); //b = 4;(2)通过数据类型作为参数:4. 在C语言中,sizeof()函数不管参数是什么,结果都是字节(byte)为单位,这也就是说如果变量数据类型为int时,sizeof()函数获取的结果就是4字节;而char型变量,sizeof()函数获取的结果就是1字节。
5. C语言中sizeof()函数的使用场景有:(1)在函数中,使用sizeof()函数把一个数组里的元素个数和每个元素的大小结合起来,就可以确定数组的总大小。
(2)当构造一个动态分配的数组时,由于动态分配的变量的类型不一定,因此可以使用sizeof()函数获取分配的数组大小,以便保证空间的足够分配。
(3)sizeof()函数还可以用来作类型转换,通过它可以把一个原始类型转换成另一种类型,例如将char型变量转换成int型变量。
6.总结sizeof()函数是C语言中最常用的内置函数,可以获取指定变量或者类型的大小,用于数组大小的计算,动态内存空间的分配,以及一些类型转换。
C语言位运算和sizeof运算符详解
C语言位运算和sizeof运算符详解C语言位运算和sizeof运算符详解C语言中提供了一些运算符可以直接操作整数的位,称为位运算,因此位运算中的操作数都必须是整型的。
位运算的效率是比较高的,而且位运算运用好的话会达到意想不到的效果。
下面,就和店铺一起来看一看C语言位运算和sizeof运算符详解,希望对大家有帮助!位运算和sizeof运算符C语言中提供了一些运算符可以直接操作整数的位,称为位运算,因此位运算中的操作数都必须是整型的。
位运算的效率是比较高的,而且位运算运用好的话会达到意想不到的效果。
位运算主要有6种:与(&),或(|),取反(~),异或(^),左移(<<),右移(>>)。
1.位运算中的类型转换位运算都必须进行Integer Promotion。
在进行运算之前,都必须将char型、short型的数据转换为int或者unsigned int型再参与运算。
如下面这段程序:#include<stdio.h>int main(void){unsigned char c=0xfc;unsigned int i=~c;printf("0x%xn",i);return 0;}在对c取反之前,先将c提升为int型,则为0x000000fc,取反之后结果就是0xffffff03,所以程序输出结果是0xffffff03,而不是0x00000003.2.异或运算的.一些特性。
a^0=a,a^a=0这两个特性是异或运算最常用的特性。
利用这个特性可以不借助临时变量就可以交换两个整数#include<stdio.h>int main(void){int a=3;int b=2;a=a^b;b=a^b;a=a^b;printf("%d %dn",a,b);return 0;}不借助临时变量交换两个数据还可以用另外一种方法。
