【发布时间】:2016-11-30 22:44:38
【问题描述】:
这是我的代码的一部分:
array = (int *) malloc(5*sizeof(int));
它已初始化并具有一些值,我在这里跳过这一步以获得更多许可。
memmove(array, array + 1, 4*sizeof(int));
array = realloc(array, 4*sizeof(int));
我想在这里完成的是删除数组的第一个成员并将整个数组向左移动一步。仍然当我尝试使用以下方法检查数组长度时:
strlen(array);
我得到值 5。似乎 realloc 无法正常工作,因为当我还尝试打印数组的第五个元素(应该在 realloc 超出数组范围之后)时,它会打印我之前给它的值.这怎么可能?
谁能指出我在哪里犯了错误,我错过了什么?
【问题讨论】:
-
1) 指针不是数组。 2) C 没有不同的字符串类型。 3) 你的 C 书对
strlen和 C 字符串的一般看法是什么?您通过简单的搜索发现了什么? -
为什么要将
strlen应用于看似ints 的数组?在这种情况下,您希望strlen做什么?关于strlen(array)表达式,编译器告诉你什么?
标签: c dynamic-memory-allocation realloc