大家说来说C语言的缺点

2020-02-11 09:53发布

我就感觉这个特不方便。
1.我发现,要定义一个数组或是字符串,最好要定义数组的大小,不然,如果后面要用指针来操作这个数组,没办法知道  数组大小,整个程序就OVER。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
99条回答
snoopyzz
1楼-- · 2020-02-16 06:57
sizeof 不是函数,相当于宏,编译时展开。
其针对类型求解。如果 a 是数组,sizeof(a) 就是数组长度, 如果 a 是指针,那就是指针这个类型的长度。
lyyyuna
2楼-- · 2020-02-16 08:10
彼岸花开@ 发表于 2014-11-29 14:28
1、谢谢指出错误。。给出了C89 C99 的不得同。
2、在17 楼已经重新写了体会。如下:
                 1、 对于静态数 ...

在MDK里人工加上-c99就应该可以定义没长度的数组也不给初值了...但此时数组长度是0

加了-c99也可以用动态数组,C99中的名字叫变长数组, 适用于局部数组变量, 其长度可以用一个变量来指定

另外用malloc 申请内存(分配在堆上), 也可以变向当数组来用, 但记得要free掉,
变长数组分配在栈上, 作用域一结束栈就自动还原了所以不用人工释放
cddx
3楼-- · 2020-02-16 09:12
snoopyzz 发表于 2014-11-29 13:38
完全错误, C语言不存在因为没定义大小就可以 随意增加数组大小的可能...

C89中不允许不指定数组大小的同 ...

局部数组动态大小。
学到了,我想应该是通过在栈上 SP-X, X 可变实现的。
wind2100
4楼-- · 2020-02-16 09:30
本帖最后由 cddx 于 2014-11-29 17:43 编辑

不要忘了当初发明C语音是为了替代汇编语言写操作系统软件的,所以有些所谓的“缺点”并不是真正的缺点哦,她有一个重要假定就是编程员自己知道要干什么,只是后来C发展的太好了,以至于大家把它用在了几乎所有领域,还繁衍出一个庞大类C家族,C++、C#、java、python、objective-c、lua等。
liujinyi016
5楼-- · 2020-02-16 10:06
 精彩回答 2  元偷偷看……
liujinyi016
6楼-- · 2020-02-16 10:20
怎么发到这儿来了?

一周热门 更多>