C语言函数 数组作为参数,,在函数里中无法计算传进来的数组长度求指教,
为什么我打印数组a的长度总是4而不是20#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<ti...
为什么我打印数组a的长度总是4而不是20
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
// 专门打印数组的函数
void printArr(int *a)
{
// int length = sizeof(a) / sizeof(int);// get the length of this arr
printf("the size is %d", sizeof(a));
/*for (int i = 0; i < length;i++)
{
printf("%d \n",a[i]);
}*/
}
void main()
{
// 产生随机数种子
time_t tms;
int a[5];// 数组的创建
srand(
(unsigned int )time(&tms));// 注意 : z这里传的是地址
// 初始化数组
for (int i = 0; i < 5;i++)
{
a[i] = rand()%100+100;// 产生100--200 的随机数
}
// 输出数组
printArr(a);
getchar();
} 展开
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
// 专门打印数组的函数
void printArr(int *a)
{
// int length = sizeof(a) / sizeof(int);// get the length of this arr
printf("the size is %d", sizeof(a));
/*for (int i = 0; i < length;i++)
{
printf("%d \n",a[i]);
}*/
}
void main()
{
// 产生随机数种子
time_t tms;
int a[5];// 数组的创建
srand(
(unsigned int )time(&tms));// 注意 : z这里传的是地址
// 初始化数组
for (int i = 0; i < 5;i++)
{
a[i] = rand()%100+100;// 产生100--200 的随机数
}
// 输出数组
printArr(a);
getchar();
} 展开
3个回答
展开全部
你传入的是一个指针,并不是一个数组。这个指针的长度就是4。
追问
求一个解决方案啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你把参数改成char a[ ]就ojbk了,char *a中a是一个指针,sizeof得出的是4,因为指针类型就是大小4,而char a[ ]中a是一个静态数组,sizeof函数得到的是数组的容量5,这是sizeof这样定义的,而且sizeof求结构体的时候,又返回结构体的实际大小,你可能觉得疑惑,就请百度sizeof用法后再来想这个问题(建议对照strlen你会理解的更好),还有一个补充,sizeof是一个运算符不是函数哦。都写到这啦,再说点别的,善用结构体,深入理解指针,二重指针,数组,一定对你有帮助,因为操作系统(linux)就是c和汇编写的,数据结构与算法也主要考c的一些算法函数,学号c语音不容易,那些响当当的公司都是优先看你数据结构算法,数据库,操作系统等的功底,是不是扯远了。。。。点个赞呗第一次回复有点激动\(≧▽≦)/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询