黑马程序员技术交流社区
标题:
int 数组传参,根据指针得到整型数组长度?
[打印本页]
作者:
T.H.T
时间:
2014-5-7 17:08
标题:
int 数组传参,根据指针得到整型数组长度?
int 数组传参,根据指针得到整型数组长度? 请大神帮忙
下面是我写的,字符串 数组传参,根据指针得到字符串数组长度。
#include <stdio.h>
int main()
{
int getPointerLengthArrayChars(char *c );
char str[4]="abc";
printf("%s\n",str);
char *p_str=&str;
int result=getPointerLengthArrayChars(p_str);
printf("得到字符串的长度:%i\n",result);
}
/**
得到指针字符串,并得到指针长度
*/
int getPointerLengthArrayChars(char *c )
{
char tempChar;
char *p_tempChar=&tempChar;
int i=0;
while (1) {
*p_tempChar=*(c+i);
if(tempChar=='\0')
{
break;
}
i++;
}
return i;
}
作者:
崔维友
时间:
2014-5-7 22:16
本帖最后由 崔维友 于 2014-5-7 22:46 编辑
#include <stdio.h>
int getLen(int *arr){
int i = 0;
while(arr[i]){
i++;
}
return i;
}
int main()
{
int arrInt[] = {32, 546, 23, 5, 3};
int l = getLen(arrInt);
printf("getLen内:%d\n", l);
printf("main内:%lu\n", sizeof(arrInt)/sizeof(int));
return 0;
}
复制代码
这个办法也有bug,如果数组中出现了0,获取的长度就是错误的。
似乎不能通过指针传参来获取整型数组长度
作者:
D调的沉默
时间:
2014-5-7 23:22
其实,你们下午在群里讨论我看到了,我要是告诉你,我下面的代码可以,不知道,你们做什么感想。
int main(int argc, const char * argv[])
{
int a[4] ={1,3,6,5};
long length = sizeof(a)/sizeof(int);
printf("%ld",length);
return 0;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2