- 主题:谢谢各位批评,是我混淆了指针和数组名
上午请教各位不定长度数组的生成问题,用各位大拿推荐的malloc函数做成了,但是在
求数组长度的时候出现问题了。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n=0;
scanf("%d",&n);
int i=0;
int *ret;
int L;
int l;
ret = (int*)malloc(n*sizeof(int));
for (i=0;i<=n-1;i++)
{
ret[i]=i+1;
printf("%d\n",ret[i]);
}
L=sizeof(ret)/sizeof(ret[0]);
printf("\n%d\n",L);
l=sizeof(*ret)/sizeof(ret[0]);
printf("\n%d\n",l);
}
求出来的L恒为2和l恒为1,并不是数组的真实长度,请问这是为什么?以及如何求出数
组的真实长度呢?谢谢
--
修改:sqsl FROM 111.193.234.*
FROM 111.193.232.*
建议你多看点基础的东西
少上网和一帮闲的无聊的人扯
上论坛不能学习语言
【 在 sqsl 的大作中提到: 】
: 上午请教各位不定长度数组的生成问题,用各位大拿推荐的malloc函数做成了,但是在
: 求数组长度的时候出现问题了。
: #include <stdio.h>
: ...................
--
FROM 219.143.9.*
现在就是照着B站的教学视频在学习呢,有些不懂的地方只好来请教了
【 在 slowaction 的大作中提到: 】
: 建议你多看点基础的东西
: 少上网和一帮闲的无聊的人扯
: 上论坛不能学习语言
: ...................
--
FROM 111.193.232.*
找一本书,按照他的体系把代码都敲一遍
等自己把基础知识都掌握了
再来研究其他的东西
【 在 sqsl 的大作中提到: 】
: 现在就是照着B站的教学视频在学习呢,有些不懂的地方只好来请教了
:
--
FROM 219.143.9.*
没有办法求,你需要用一个变量来储存这个长度,或者你在这段内存里面找个地方存这个数(实际这不是数组
--
FROM 111.205.43.*
确实,他返回的是指针地址
【 在 timeleap 的大作中提到: 】
: 没有办法求,你需要用一个变量来储存这个长度,或者你在这段内存里面找个地方存这个数(实际这不是数组
--
FROM 111.193.232.*
弄个结构,存指针,长度和其他信息。
【 在 sqsl 的大作中提到: 】
: 上午请教各位不定长度数组的生成问题,用各位大拿推荐的malloc函数做成了,但是在
: 求数组长度的时候出现问题了。
: #include <stdio.h>
: ...................
--
FROM 221.218.61.*
其实有办法。分配指针之前,有N个字节的参数,里边有块长度。
不过没有公布这个结构,也不兼容其他环境。
【 在 sqsl 的大作中提到: 】
: 上午请教各位不定长度数组的生成问题,用各位大拿推荐的malloc函数做成了,但是在
: 求数组长度的时候出现问题了。
: #include <stdio.h>
: ...................
--
FROM 221.218.61.*
ret类型不对。
应该是size_t ret;
多半是long而不是int。
【 在 sqsl 的大作中提到: 】
: 上午请教各位不定长度数组的生成问题,用各位大拿推荐的malloc函数做成了,但是在
: 求数组长度的时候出现问题了。
: #include <stdio.h>
: ...................
--
FROM 221.218.61.*
指针类型就是指针类型
不是long也不是int
【 在 ylh0315 的大作中提到: 】
: ret类型不对。
: 应该是size_t ret;
: 多半是long而不是int。
--
FROM 223.104.40.*