C语言中数组参数传递,sizeof(数组名)的值

nullnullptr 2016-12-26 10:56:09
求教,为什么以下代码中的ss和tt的值是数组长度,ssize和tsize却是指针的长度???为什么咧?
#include<stdio.h>

int strrindex(char s[], char t[]);

int main()
{
char s[] = "hworldmeworldhello";
char t[] = "world";
int ss = sizeof(s) / sizeof(s[0]);
int tt = sizeof(t) / sizeof(t[0]);
int v = strrindex(s, t);
printf("%d", v);
}

int strrindex(char s[], char t[])
{
int ssize;
ssize = sizeof(s) / sizeof(s[0]);
int tsize;
tsize = sizeof(t) / sizeof(t[0]);
// int ssize = strlen(s);
// int tsize = strlen(t);
int i, j, k;
for (i = ssize - tsize; i >= 0; --i)
{
for (j = i, k = 0; t[k] != '\0'&&s[j] == t[k]; ++j, ++k)
;
if (k>0 && t[k] == '\0')
return i;
}
return -1;
}
...全文
439 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nullnullptr 2016-12-26
  • 打赏
  • 举报
回复
引用 7 楼 WQW217 的回复:
老师说 要多看多用CSDN 学习C++
老师说的对
WQW217 2016-12-26
  • 打赏
  • 举报
回复
老师说 要多看多用CSDN 学习C++
nullnullptr 2016-12-26
  • 打赏
  • 举报
回复
http://www.cnblogs.com/ymy124/archive/2012/03/05/2380048.html 有同样疑惑的可以看看这篇微博,觉得写得很清楚
nullnullptr 2016-12-26
  • 打赏
  • 举报
回复
引用 4 楼 shihengzhen101 的回复:
[quote=引用 3 楼 ipqtjmqj 的回复:] [quote=引用 2 楼 suhann 的回复:] [quote=引用 1 楼 ipqtjmqj 的回复:] 隐式转换成指向数组第一个元素的指针了, char s[]这种写法与char *s没有区别
请问什么情况下会隐式转换呢? [/quote] 函数传参,函数返回值。 转换的原因为了节省复制时间[/quote] 也就是这些情况了吧[/quote]谢谢,懂了。
AlbertS 2016-12-26
  • 打赏
  • 举报
回复
引用 3 楼 ipqtjmqj 的回复:
[quote=引用 2 楼 suhann 的回复:] [quote=引用 1 楼 ipqtjmqj 的回复:] 隐式转换成指向数组第一个元素的指针了, char s[]这种写法与char *s没有区别
请问什么情况下会隐式转换呢? [/quote] 函数传参,函数返回值。 转换的原因为了节省复制时间[/quote] 也就是这些情况了吧
ipqtjmqj 2016-12-26
  • 打赏
  • 举报
回复
引用 2 楼 suhann 的回复:
[quote=引用 1 楼 ipqtjmqj 的回复:] 隐式转换成指向数组第一个元素的指针了, char s[]这种写法与char *s没有区别
请问什么情况下会隐式转换呢? [/quote] 函数传参,函数返回值。 转换的原因为了节省复制时间
nullnullptr 2016-12-26
  • 打赏
  • 举报
回复
引用 1 楼 ipqtjmqj 的回复:
隐式转换成指向数组第一个元素的指针了, char s[]这种写法与char *s没有区别
请问什么情况下会隐式转换呢?
ipqtjmqj 2016-12-26
  • 打赏
  • 举报
回复
隐式转换成指向数组第一个元素的指针了, char s[]这种写法与char *s没有区别
hijack00 2016-12-26
  • 打赏
  • 举报
回复
楼上正解,这是个很古老的问题了,之前好像也有人问到这方面的问题吧
paschen 2016-12-26
  • 打赏
  • 举报
回复
数组作为函数参数与返回值时,会退化为指针,sizeof指针得到的是指针的大小(32位程序为4)

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧