sizeof(int)*p 表示什么意思?
2017-07-12 09:54
666 查看
1.sizeof(int)*p 表示什么意思? 留几个问题(讲解指针与数组时会详细讲解),32 位系统下:2.int *p = NULL; sizeof(p)的值是多少? sizeof(*p)呢? 3.int a[100]; sizeof (a) 的值是多少?sizeof(a[100])呢? sizeof(&a)呢?sizeof(&a[0])呢?4.int b[100]; void fun(int b[100]) { sizeof(b); // sizeof (b) 的值是多少? }答:1.表示计算int型所占字节数,然后再乘以p。
如果是这种形式的话:sizeof(int *p),表示计算指向整型的指针变量p所占的字节数。
2.int *p=NULL; 指针地址用 DWORD, sizeof(p) 是 4。sizeof(*p) 是值, 等于 sizeof(int) ,可能 是 2 也可能是 4。 (DWORD 就是 Double Word, 每个word为2个字节的长度,DWORD 双字即为4个字节,每个字节是8位,共32位。) 定义指针,一般先给初始化,用NULL来初始化它,避免野指针。你这里说的int *p,这个p里面是随机值,而int *p=NULL,这个p是有值的,为NULL.这其实对程序也没有啥贡献,在后面你也可以随时让这个p指向别的地址。定义指针,顺便将它初始化为NULL,这样做编程更规范。 int *p;和int *p=NULL有什么区别啊? int *p只是定义整形指针。 int *p=NULL是定义指针p并指向null,和int *p;p=NULL;一样 3.int a[100]; //声明了一个有100个int类型元素的数组, 数组下标从0~99, 所以a是数组名, 代表数组的首地址, 也就是&a[0] sizeof (a) //返回数组a在内存中所占的空间大小,以字节为单位, 也就是sizeof(a) = sizeof(int) * 100 = 4 * 100 = 400bytes
//a本身是个地址,用int存放,占用4个字节。int就是4,a[100]一共是100个int变量,就是400.
sizeof(a[100])//求第100个元素的大小 ,用int存放,占用4个字节 sizeof(&a)//表示存放a的地址的空间内存的地址的大小,即&a也是个地址值。一个地址用int存放也是4个字节 sizeof(&a[0])//取第一个元素的地址,用int存放,占用4个字节
4.int b[100]; void fun(int b[100]) { sizeof(b); //等于4 } 和void fun(int* b) { sizeof(b); //等于4 }是等价的。 当你在调用fun函数时,他们内部实际上是这样做的,先将b[100]数组的首个元素的地址赋值给了函数参数列表中的那个b指针,虽然都是b,但是却是在不同额作用域,故你可以理解成fun参数列表中的b是一个指针,在32位系统中,指针永远是4个字节。
相关文章推荐
- sizeof(int)*p表示什么意思?
- JAVA 中int... String...表示什么意思
- MySQL数据类型 int(M) 表示什么意思?
- MySQL数据类型 int(M) 表示什么意思?
- MySQL数据类型 int(M) 表示什么意思?详解mysql int类型的长度值问题
- INT(M)表示什么意思?
- Linux文件前面加点例如.bashrc表示什么意思
- sql server中,N''表示什么意思?
- Perl中的符号 ->;、=>; 和 :: 分别表示什么意思?
- int(11)中的11是什么意思
- 一个函数名后面加const表示什么意思
- [置顶] bootstrap里的sr-only是什么属性?sr-only表示什么意思?有什么用途?
- c语言中int什么意思以及什么是无符号和有符号整型
- 响应码 各自每段表示什么意思
- C#中的 int? int??是什么意思
- c#里面int?什么意思
- 一个函数名后面加const表示什么意思
- 程序猿之---C语言细节9(宏定义、max(a,b)宏定义细节、大小端判断、(int&)a什么意思)
- <a>标签中href=\"javascript:;\"表示什么意思??
- __extension__ typedef int __ssize_t;是什么意思