今天忽然想到一个有趣的问题
剑客(172738246) 09:39:51
有个问题,设计一个返回数组长度的函数
int g(char s[])
例如 int s[20];
g(s) 返回20
蜡笔小新NO1(326238989) 09:40:11
为什么要设计?
蜡笔小新NO1(326238989) 09:40:28
C语言规定数组是必须知道哦长度的
剑客(172738246) 09:41:00
不错,理由呢
□ヘζ龍」(280860494) 09:41:24
从 定义数组的格式看出来
蜡笔小新NO1(326238989) 09:42:04
既然必须知道哦数组长度
蜡笔小新NO1(326238989) 09:42:16
难道你需要设计这个函数?
剑客(172738246) 09:44:08
不是,只是想着好玩,如果要写出这个函数,还真写不出来,原因的是C的数组没有长度这个属性,pascal有的,所以写不出来
剑客(172738246) 09:45:35
所以memcpy 一些函数 里面的都有一个长度参数
蜡笔小新NO1(326238989) 09:46:21
你是你知道源的长度啊
南孚电池<namei815@163.com> 09:53:28
可以用动态内存分配啊
剑客(172738246) 09:54:36
南孚电池<namei815@163.com> 09:53:28
可以用动态内存分配啊
能否说具体一点
南孚电池<namei815@163.com> 09:55:33
我的意思是说数组的长度可以根据你需要来分配 不需要开始就知道长度
南孚电池<namei815@163.com> 09:56:40
用malloc函数啊
剑客(172738246) 09:56:48
你的意思就是new 吧,不过跟 的问题好像无关啊, 问的是这个函数到底可以不可以设计出来?
蜡笔小新NO1(326238989) 09:56:56
char *p ="hello world/n";
int len = strlen(p);
char *q = malloc(len);
memcpy(q,p,len):
不知道是不是我表达的不行,还是什么!
gogle了一下,原文如下
语言也使用字符数组作为字符串。定义一个char a[20],就相当于定义了一个长度不超过20的字符串。Pascal中使用a[0]记录字符串的长度,字符串内容从a[1]开始;但C语言并
感觉自己也说错了,pascal的数组真跟我说的一样吗,这边没有delphi,不好试验
总结: 设计函数的时候,如果涉及到数组,必定有个长度参数