- 主题:谢谢各位批评,是我混淆了指针和数组名
上午请教各位不定长度数组的生成问题,用各位大拿推荐的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.*
现在就是照着B站的教学视频在学习呢,有些不懂的地方只好来请教了
【 在 slowaction 的大作中提到: 】
: 建议你多看点基础的东西
: 少上网和一帮闲的无聊的人扯
: 上论坛不能学习语言
: ...................
--
FROM 111.193.232.*
确实,他返回的是指针地址
【 在 timeleap 的大作中提到: 】
: 没有办法求,你需要用一个变量来储存这个长度,或者你在这段内存里面找个地方存这个数(实际这不是数组
--
FROM 111.193.232.*
谢谢大佬的专业答疑
【 在 poggy 的大作中提到: 】
: 主要是你没理解, C语言的指针变量。
: L=sizeof(ret)/sizeof(ret[0]);
: l=sizeof(*ret)/sizeof(ret[0]);
: ...................
--
FROM 111.193.234.*
谢谢大佬的专业答疑
【 在 poggy 的大作中提到: 】
: 主要是你没理解, C语言的指针变量。
: L=sizeof(ret)/sizeof(ret[0]);
: l=sizeof(*ret)/sizeof(ret[0]);
: ...................
--
FROM 111.193.234.*
谢谢理解,不过作为新手来请教,已经做好了接受批评的准备了哈哈
【 在 e729 的大作中提到: 】
: 对于新手,指针和数组有着太多的相似点,不容易分清,c老手不应该依此奚落新手。编个程而已嘛。
--
FROM 111.193.234.*