社区
C语言
帖子详情
怎么用sizeof取指针的指向内容的大小
gjunyu1982
2006-02-06 05:59:06
不管是什么类型的*p
取得p指向的内存的空间的大小
...全文
6638
11
打赏
收藏
怎么用sizeof取指针的指向内容的大小
不管是什么类型的*p 取得p指向的内存的空间的大小
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kprzen
2006-02-08
打赏
举报
回复
过路,我建议楼主去看看林锐博士的<<高质量C++/C编程指南>>
prostar
2006-02-07
打赏
举报
回复
1
比如
char buffer[100];
char* p = buffer ;
int bufsize = sizeof( buffer ) / sizeof( *p ) ;
可以看到,bufsize是100,得到了那个数组的大小。或者这些写更直观:
int bufsize = sizeof( buffer ) / sizeof( buffer[0] ) ;
fine10000
2006-02-07
打赏
举报
回复
mark
gnixemos
2006-02-07
打赏
举报
回复
1
malloc的内存可以用
_msize
慢慢来还不行么
2006-02-07
打赏
举报
回复
学习
huanmm
2006-02-07
打赏
举报
回复
sizeof(*p);
如果指针指向的是单个变量还可以这样用
但是如果指向的是一个数组就不行了,只能得到数组第一个元素的长度
yun3
2006-02-07
打赏
举报
回复
标准C下sizeof(* p) 不能实现。
首先,你定义的* p就有类型,因此,你输出的* p 肯定是指针型。
16位编辑器 为2。
digifish
2006-02-07
打赏
举报
回复
标准C是无能为力了。在Windows下用VC的话,到可能有些办法,比如用API函数HeapSize( GetProcessHeap(), 0, p);
iamcaicainiao
2006-02-06
打赏
举报
回复
1
用运算符sizeof可以计算出数组的容量(字节数)。示例7-3-3(a)中,sizeof(a)的值是12(注意别忘了’\0’)。指针p指向a,但是sizeof(p)的值却是4。这是因为sizeof(p)得到的是一个指针变量的字节数,相当于sizeof(char*),而不是p所指的内存容量。
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
C++/C语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。示例7-3-3(b)中,不论数组a的容量是多少,sizeof(a)始终等于sizeof(char *)。
char a[] = "hello world";
char *p = a;
cout<< sizeof(a) << endl; // 12字节
cout<< sizeof(p) << endl; // 4字节
示例7-3-3(a) 计算数组和指针的内存容量
void Func(char a[100])
{
cout<< sizeof(a) << endl; // 4字节而不是100字节
}
示例7-3-3(b) 数组退化为指针
还有一种可能是,你确信指针指向连续的内存,尾巴的地方是NULL,也可以确定。否则,应该木有办法吧。
jww_in_windows
2006-02-06
打赏
举报
回复
同意楼上的
JustNewBie
2006-02-06
打赏
举报
回复
sizeof(*p);
C/C++
指针
的13份资料
C/C++
指针
的13份资料
内容
丰富,让编程人员不再害怕
指针
如何使用
sizeof
获
取
指针
指向
数组的长度
如何使用
sizeof
获
取
指针
指向
数组的长度 一般可以直接使用
sizeof
加数组名获
取
数组长度,但是封装为函数后,一般使用
指针
来传递数组值,但在函数体内使用
sizeof
指针
是不对的,此时结果是
指针
的
大小
,并不是数组的
大小
。为了获
取
指针
指向
数组的
大小
,下列函数可以采用,但也只能获
取
固定结束符的数组长度。 #include <stdio.h> int Sz_len(int *Data) { ...
sizeof
()为什么不能得到
指针
指向
内容
的
大小
首先,我们看看
sizeof
是什么?是一个操作符,也是关键字,就不是一个函数,这和strlen()不同,strlen()是一个函数。 那么
sizeof
的作用是什么? 返回一个对象或者类型所占的内存字节数。 我们会对
sizeof
()中的数据或者
指针
做运算吗? 基本不会。 例如
sizeof
(1+2.0),直接检测到其中类型是double,即是
sizeof
(double) = 8。 如果是
指针
,
sizeof
只会检测到是
指针
的类型,
指针
都是占用4个字节的空间(32位机)。 char *p = "sadasd
C语言中
sizeof
测试数组
指针
大小
问题
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) { int arr[5] = {1, 2, 3, 4, 5}; int(*p)[5] = &arr; //typedef与赋值操作不能同时使用。 type...
获
取
数组和
指针
指向
空间
大小
(1)对于数组,可以用
sizeof
(数组名) /
sizeof
(type) 得到其长度。注:在 函数传递后,数组会退化为一个普通
指针
,此时在函数体内使用
sizeof
(
指针
形参) /
sizeof
(type) 是无法得到
指针
指向
区域空间
大小
的。解决方法是将数组
大小
作为函数的形参传递进去。 (2)获
取
指针
指向
空间的
大小
:如果
指针
是用malloc和new等方式动态分配的,可以使用位于中的_ms
C语言
70,019
社区成员
243,266
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章