学习心得——数组作为函数参数后sizeof获取不到数组在内存中所占字节数的问题
帮同学解决了一个问题,自己从中也学到了东西,记下学习心得~~~
问题重现:
数组通过函数传递后为什么获取不到数组在内存中占用地址的长度?
在VS中编写如下的测试代码:
#include "stdafx.h" void test(int b[]) { int mm, nn; printf("%p", "%p", "%p ", b, &b[0], &b); printf(" "); mm = sizeof(b); nn = sizeof(b[0]); int length_call = mm / nn; for (int i = 0; i < length_call; i++) { printf("%d ", b[i]); } } int _tmain(int argc, _TCHAR* argv[]) { int a[3] = {2,5,8}; int m, n; printf("%p", "%p", "%p ", a, &a[0], &a); printf(" "); m = sizeof(a); n = sizeof(a[0]); int length = m / n; // int length = sizeof(a) / sizeof(a[0]); for (int i = 0; i < length;i++) { printf("%d ", a[i]); } printf("调用函数的输出结果: "); test(a); return 0; }
输出结果:
(1)三个参数分别是数组、指针、数组指针;
、
(2)m和n分别为整形数组和整形变量在内存中占用的字节数;
(3)传入参数为数组;
(4)进入被调函数;
(5)三个参数分别为:指向传入数组首地址的指针、数组第一个元素的地址(即指针)、指针的地址;
(6)mm和nn分别为整形指针和整形变量在内存中占用的字节数;
程序自然只能输出2咯~~
~~~~~~~~~~欢迎拍砖
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了