大家说来说C语言的缺点

2020-02-11 09:53发布

我就感觉这个特不方便。
1.我发现,要定义一个数组或是字符串,最好要定义数组的大小,不然,如果后面要用指针来操作这个数组,没办法知道  数组大小,整个程序就OVER。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
99条回答
彼岸花开@
1楼-- · 2020-02-12 05:18
wind2100 发表于 2014-11-29 09:56
sizeof 只能统计数组 大小

我觉得一但指针被初始化后,指针指向的东西就是有大小的了 ...

1、如果在初始化的时候,没有定义数组的大小。在后边使用的时候数组的中被赋值。。。那么使用sizeof 统计数组的大小。是这个数组中已经有被填充的大小吧。。因为数组是未定义大小的,所以数组的大小还是有可以一直增加的。 我的理解对不对呢
2、用指针操作数组,如果发生越界。确实很严重。。  
3、用指针的时候能不能判断一下 ,数组的最后总是'' 结束嘛。。这个我没有尝试过。
fengyunyu
2楼-- · 2020-02-12 07:16
彼岸花开@ 发表于 2014-11-29 10:15
1、如果在初始化的时候,没有定义数组的大小。在后边使用的时候数组的中被赋值。。。那么使用sizeof 统计 ...

数组大小是定义是确定的,貌似不能一直增加。至于用指针去访问数组的越界问题,那是软件设计的问题,和数组、c语言无关。
ijlc1314
3楼-- · 2020-02-12 08:54

指针正是C语言的强大之处,楼主说的这个不是C语言的不足之处,而在于使用指针的人
wicy001
4楼-- · 2020-02-12 10:28
wind2100 发表于 2014-11-29 09:56
sizeof 只能统计数组 大小

我觉得一但指针被初始化后,指针指向的东西就是有大小的了 ...

在定义指针的时,指针指向的东西就有大小。
比如 char* p, sizeof(*p)也只能是一个char

如果你想sizeof(*p)返回一个数组的大小,那么可以自定义之中类型
typedef struct
{
char str[10];
}
Str_TypeDef;

这是定义Str_TypeDef * p,  此时sizeof(*p),就是数组str[]的大小了。


security
5楼-- · 2020-02-12 14:49
 精彩回答 2  元偷偷看……
wicy001
6楼-- · 2020-02-12 16:24
彼岸花开@ 发表于 2014-11-29 10:15
1、如果在初始化的时候,没有定义数组的大小。在后边使用的时候数组的中被赋值。。。那么使用sizeof 统计 ...

数组和字符串混了。

数组里面的数据可以任意,并不是结尾
字符串才是结尾。

如果想用数组放字符串“www”,数组至少要定义成4个字节,第四个字节用来放''

一周热门 更多>