【分享(笔试常考易错)】sizeof求数组长度的剖析心得

原创 2016年05月30日 17:13:50
#include <stdio.h>
#include <assert.h>
void fun(int arr[], int len)
//void fun(int *arr)整型数组相当于用指针表示的地址
{
 printf("---%d\n", sizeof(arr));   /*传参过来的是整个数组,4*10=40  */
 printf("---%d\n", sizeof(arr[0]));   /*首元素是int 型,4字节*/
 printf("---len = %d\n", sizeof(arr) / sizeof(arr[0]));  /*  40/4=10   */
}
int main()
{
 int arr[10];
 fun(arr, sizeof(arr) / sizeof(arr[0]));      /*调用函数*/
 /*sizeof求长度求的是类型大小,与字符串本身无关*/
 printf("%d\n", sizeof(arr));   /*数组arr的类型是int型,4字节*/
 printf("%d\n", sizeof(arr[0]));  /*首元素arr[0]是int 型,4字节*/
 printf("len = %d\n", sizeof(arr) / sizeof(arr[0]));   /* 4/4=1*/
 
 system("pause");
 return 0;
}

wKioL1YrRK-SgMTVAAC8sSZBUEQ312.jpg

        所以,在求数组的长度时,要么可以用strlen来求,要么用sizeof时注意必须要用函数调用实现,否则求出的长度可能有误。

相关文章推荐

关于C++中sizeof()、数组长度和函数传参的一点心得

昨天参加了腾讯2014的s

互联网几道常考易错笔试题总结

1)  覆盖 重载 隐藏 覆盖:基类定义的虚函数,派生类中重新定义,派生类的虚函数表将覆盖基类已定义的虚函数。 重载:重载发生在同一个类中,重载不能跨类。重载是因为函数名相同,函数的参数个数或参数...

sizeof获取数组长度

昨天开始看《算法导论》这本书,第一个算法就是(直接)插入排序,根据书里给出的伪代码写出了C语言代码,也根据自己的理解重新写了一个。虽然实现了算法的基本要求,但有些细节没有处理好,今天就来完善一下。 在...

关于sizeof在调用函数中获取被调函数数组长度的思考

我们知道, sizeof 是一个操作符,其作用是返回一个操作数所占的内存字节数。那么在函数调用中,如何求一个被调函数数组的长度呢? 现在我们来看下面的示例代码: #include void f...

对strlen()函数无法正确读取字符串数组长度的原因剖析

对strlen()函数无法正确读取字符串数组长度的原因剖析

c++求数组长度

转自:http://blog.sina.com.cn/s/blog_5a48dd2d0101cpfl.html 说道求数组长度,可能你首先会想到用以下公式 int a[10] = {...}; si...

结构体中最后一个数组长度为零

  • 2010年11月07日 11:57
  • 41KB
  • 下载

在函数中求数组长度?no,you can't

 C语言中可以求任意一个int型数组的长度吗? 近来在写程序的时候遇到了一个问题,就是传递一个数组指针进入一个函数的时候,虽然指针能够顺利的传递,但是,我们无法求出该数组的大小。见下面的代码: ...
  • hyqsong
  • hyqsong
  • 2015年02月06日 11:03
  • 426

求两个有序数组的中位数(无论数组长度是否一样)

转自:http://blog.csdn.net/hhygcy/article/details/4584064 问题出处: http://fayaa.com/tiku/view/114/  ...

c语言和c++中求数组长度

C、C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) /...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【分享(笔试常考易错)】sizeof求数组长度的剖析心得
举报原因:
原因补充:

(最多只允许输入30个字)