sizeof()为什么不能得到指针指向内容的大小
2017-07-31 20:21
239 查看
今天有位小朋友向我请教了这么一个问题咯,我很开心地做了答复。
首先,我们看看sizeof是什么?是一个操作符,也是关键字,就不是一个函数,这和strlen()不同,strlen()是一个函数。
那么sizeof的作用是什么?
返回一个对象或者类型所占的内存字节数。
我们会对sizeof()中的数据或者指针做运算吗?基本不会。
例如sizeof(1+2.0),直接检测到其中类型是double,即是sizeof(double) = 8。
如果是指针,sizeof只会检测到是指针的类型,指针都是占用4个字节的空间(32位机)。
char *p = "sadasdasd";
sizeof(p):4
sizeof(*p):1//指向一个char类型的
除非使用strlen(),仅对字符串有效,直到'\0'为止了。
要是非要使用sizeof来得到指向内容的大小,就得使用数组名才行,
如char a[10];
sizeof(a):10 //检测到a是一个数组的类型。
首先,我们看看sizeof是什么?是一个操作符,也是关键字,就不是一个函数,这和strlen()不同,strlen()是一个函数。
那么sizeof的作用是什么?
返回一个对象或者类型所占的内存字节数。
我们会对sizeof()中的数据或者指针做运算吗?基本不会。
例如sizeof(1+2.0),直接检测到其中类型是double,即是sizeof(double) = 8。
如果是指针,sizeof只会检测到是指针的类型,指针都是占用4个字节的空间(32位机)。
char *p = "sadasdasd";
sizeof(p):4
sizeof(*p):1//指向一个char类型的
除非使用strlen(),仅对字符串有效,直到'\0'为止了。
要是非要使用sizeof来得到指向内容的大小,就得使用数组名才行,
如char a[10];
sizeof(a):10 //检测到a是一个数组的类型。
相关文章推荐
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?为什么在类体内可以定义将静态成员声明为其所属类的类型呢 ?
- 当数组是函数的参数时, 为什么sizeof 不能正确报告数组的大小?
- 数组作为函数的参数时,不能通过sizeof运算符得到该数组的大小
- 面试题函数返回值 return 后的内容不能指向“栈内存”的“指针”和“引用”
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?
- 为什么指向字符串的指针内容有时可变有时不可变?
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?
- 关于字符串指针指向内容不能修改的问题
- 指针指向常量的场合,不能试图通过修改指针指向的内容来修改常量
- sizeof应用于虚参形式的数组时,得到的结果是4(指针大小) k&r 5-4
- 为什么不能修改指向字符串的指针
- 数组名是指针,为什么sizeof(数组名)还是数组的大小
- C语言的字符指针必须分配空间或者指向某个地址否则不能使用
- 为什么要使用指向指针的指针
- sizeof()返回的是变量类型开辟内存空间的大小,而不是当前内容的大小
- C++入门学习:虚析构、构造中不能实现多态、基类指针指向派生类数组的弊端
- 添加内容的框框,要用textarea 不要用span来固定大小,span总的内容不能换行
- 指针大小为什么与类型无关
- linux 指针参数所指向空间大小的计算 malloc realloc alloc 指针指向空间的大小的计算 malloc_chunk结构
- 获取指针指向空间大小