bin554385863 发表于 2019-5-27 23:08:15

自定义整形数组长度函数的问题

本帖最后由 bin554385863 于 2019-5-27 23:12 编辑

#include <stdio.h>
#include "E:\Administrator\Documents\My C\My C Function\Function.c"
size_t arrlen( size_t arr[])
{   
    size_t i = 1;
    while (*(arr+i)!='\0')
    {
      i++;
    }
    return i;
}
int main(int argc, char const *argv[])
{
    int a[] = {0,1,2,3,4,5,6,7,8,9};
    int b[] = {9,8,7,6,5,4,3,2,1,0};
    int c[] = {1,2,3,4,0,5,6,7,8,9};
    printf("arrlen(a) = %d\n", arrlen(a));
    printf("arrlen(b) = %d\n", arrlen(b));
    printf("arrlen(c) = %d\n", arrlen(c));
    return 0;
}

-----------------------------------------------------------------------------------------
E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-z5nfovlr.ahu --stdout=Microsoft-MIEngine-Out-raqrkqg1.g3l --stderr=Microsoft-MIEngine-Error-jihjm1q3.oiv --pid=Microsoft-MIEngine-Pid-myhp2i3r.ctf --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
arrlen(a) = 10
arrlen(b) = 9
arrlen(c) = 4

E:\Administrator\Documents\My C>
======================================
如上,当0在首位输出正常,
当0在中间或末尾就出现异常,
网上说的只有字符串数组的结束标志'\0';
数字数组如何判断已经结束?

jackz007 发表于 2019-5-27 23:51:07

      字符串以一个'\0'作为结束标志那是系统约定,数字数组则无统一约定,只能根据情况,硬性规定一个不可能出现的特殊数值或组合来作为这个标志。

bin554385863 发表于 2019-5-27 23:53:46

jackz007 发表于 2019-5-27 23:51
字符串以一个'\0'作为结束标志那是系统约定,数字数组则无统一约定,只能根据情况,硬性规定一个不可 ...

也就是说纯数字数组的结束标志可以自定义?

jackz007 发表于 2019-5-27 23:55:11

这个,您说了算!

bin554385863 发表于 2019-5-28 00:07:23

jackz007 发表于 2019-5-27 23:55
这个,您说了算!

{:5_109:}多谢
页: [1]
查看完整版本: 自定义整形数组长度函数的问题