Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么此自动扩展阵列失败?_C - Fatal编程技术网

C 为什么此自动扩展阵列失败?

C 为什么此自动扩展阵列失败?,c,C,新分配的指针realloc()的返回值在OP的代码中未使用 保存返回值,测试是否成功,然后分配 1 2 3 2 2 1 2 3 2 1 2 4 5 3 3 2 1 2 3 2 1 2 3 2 1 2 3 2 1 1990352 0 1973264 0 2 1 2 3 2 1 2 4 5 3 3 2 1 2 3 2 1 2 3 2 1 2 3 2 1 避免根据类型调整大小,因为它容易出错。根据取消引用指针的类型调整大小很容易正确编码、查看和维护。不需要石膏 // (int*)realloc(

新分配的指针
realloc()
的返回值在OP的代码中未使用

保存返回值,测试是否成功,然后分配

1 2 3 2 2 1 2 3 2 1 2 4 5 3 3 2 1 2 3 2 1 2 3 2 1 2 3 2 1

1990352 0 1973264 0 2 1 2 3 2 1 2 4 5 3 3 2 1 2 3 2 1 2 3 2 1 2 3 2 1

避免根据类型调整大小,因为它容易出错。根据取消引用指针的类型调整大小很容易正确编码、查看和维护。不需要石膏

// (int*)realloc(p,n*2*sizeof (int));

// Instead
void *new_p = realloc(p, sizeof *p * n * 2);
if (new_p == NULL) {
  Handle_allocation_failure();  // User code here
  return EXIT_FAILURE;
}
p = new_p;
n = n*2;

新分配的指针
realloc()
的返回值在OP的代码中未使用

保存返回值,测试是否成功,然后分配

1 2 3 2 2 1 2 3 2 1 2 4 5 3 3 2 1 2 3 2 1 2 3 2 1 2 3 2 1

1990352 0 1973264 0 2 1 2 3 2 1 2 4 5 3 3 2 1 2 3 2 1 2 3 2 1 2 3 2 1

避免根据类型调整大小,因为它容易出错。根据取消引用指针的类型调整大小很容易正确编码、查看和维护。不需要石膏

// (int*)realloc(p,n*2*sizeof (int));

// Instead
void *new_p = realloc(p, sizeof *p * n * 2);
if (new_p == NULL) {
  Handle_allocation_failure();  // User code here
  return EXIT_FAILURE;
}
p = new_p;
n = n*2;

realloc
返回新指针,但不会就地修改。没有C函数可以修改它的参数(除非你向它传递一个指针)。代码很难阅读,因为它没有正统的缩进样式。您应该检查
scanf()
中的返回值,以确保您没有处理错误数据。使用下标-它们更容易阅读:
&p[i++]
(p+i++)
更简单,例如。
realloc
返回新指针,但不会就地修改。没有C函数可以修改它的参数(除非你向它传递一个指针)。代码很难阅读,因为它没有正统的缩进样式。您应该检查
scanf()
中的返回值,以确保您没有处理错误数据。使用下标-它们更容易阅读:
&p[i++]
(p+i++)
更简单。