关于sizeof,怎么记录const char*

新人刚学😭如何对walk计数,这样用似乎不对,我试了用n=sizeof(walk)/sizeof(char);还是不行,正常来说n应该等于10的。

img

sizeof是C语言的一个运算符,不是函数,虽然用法很像函数,sizeof的作用是用来返回()里面的变量或者数据类型占用的内存字节数。
函数形参是数组时,实际传递的不是整个数组,而是数组的首元素首地址。也就是说函数传参用数组来传,实际相当于传递的是指针(指针指向数组的首元素首地址)。

所以你 walk 是指针,不是数组,
只有sizeof(数组名)操作的是数组时,才能返回整个数组所占用的内存空间(以字节为单位的)。
如果sizeof(指针)操作的是指针,返回是指针本身所占用的内存空间,在32位系统上,不管指针p指向的是整型数据,还是字符型数据,short型数据,long型数据等,指针本身所占的内存字节数均为4。
如果要在函数中用到数组长度就只能在函数外面获取数组长度再传到函数里。

参考


别混淆了sizeof(数组名)和sizeof(指针) - 简书 本文著作权声明:请务必阅读个人介绍部分! 我们在挨个儿输出一个数组中的元素时,最常用的就是用一个for循环来实现,简单了事。比如类似下面的代码片段: 用一个下标索引变量i来遍... https://www.jianshu.com/p/bd6dc60e9e24

如有帮助,望采纳!谢谢!