c++ 数组用指针方式传递给函数以后如何获得数组的长度?

如题。... 如题。 展开
 我来答
iamchenmin
推荐于2018-05-07 · TA获得超过1199个赞
知道小有建树答主
回答量:625
采纳率:50%
帮助的人:306万
展开全部
将数组作为一个参数传出去,那么他就会“退化”成一个指针类型,进而失去“数组的属性”。(这里的数组不是new出来的)

这里的“属性”指的是数组可以使用sizeof(Array)/sizeof(Array[0])的方法获得其长度的方法的属性。

要在一个函数中得到一个数组的长度,你应该这个数组作为一个引用传出去,那样,就能用sizeof(Array)/sizeof(Array[0])的方法获得长度了。
更多追问追答
追问
要求了指针传递
追答
那可真坑爹了啊,要不,你给加一个int型长度作为参数传进去?
Luna_dx_37
2017-10-13
知道答主
回答量:1
采纳率:0%
帮助的人:921
展开全部
/*Make 2D Array v2.*/
template<typename T, typename T2>
void make2dArray(/*output para*/T** &arr, const uint16_t x, T2& volatileY_array)
{
        /*你要的长度。用模版的形式,就能够把数组以指针的形式传进来。*/
int len = sizeof(volatileY_array)/sizeof(volatileY_array[0]);
try
{
if (x != len) 
{
throw std::bad_alloc();
}
arr = new T*[x];
for (int i = 0; i < x; i++)
{
arr[i] = new T[volatileY_array[i]];
}
}
catch (std::bad_alloc)
{
std::cout << "Error." << std::endl;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WM_THU
2013-09-13 · TA获得超过7163个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3842万
展开全部
无法获得,必须再传一个长度进去。
追问
已知。用以下语句:
void strfind(char * s, char *t){
char *p1,*p2;
p1 = s ; //指针指向s的第一个字符
p2 = t + strlen(t)-1; //指针指向t的最后一个字符
}
追答
没说是字符串。。。
恭喜您解决问题。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a784296290z
2013-09-13
知道答主
回答量:66
采纳率:0%
帮助的人:17.2万
展开全部
int a(int * x)
{
int y;
while(!(*x))
x++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cjj796
2013-09-13 · TA获得超过8701个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3313万
展开全部
int len = sizeof(str)/sizeof(char *);
追问
~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式