C语言创建动态数组,计算前缀和数组。 b是数组a的前缀和的数组定义:b[i]=a[0]+a[1]

C语言创建动态数组,计算前缀和数组。 b是数组a的前缀和的数组定义:b[i]=a[0]+a[1],第1张

关于在 C 语言中创建动态数组的问题,可以使用 C 语言提供的库函数:malloc( ) 来创建动态数组。即可以使用如下代码进行实现:

#include <stdlib.h>/* 动态分配内存的库函数 malloc( )、以及后面用到的 free( ) 释放内存库函数在此头文件中有函数原型定义,故必须包含该头文件 */

#include <stdio.h>

void main( )

{

int num, * p

printf("Please input a number :\n" )

scanf("%d", &num)

p = (int *)malloc(num) * sizeof(int) /* 根据前面从键盘上输入的数字 num,动态分配一个整型动态数组 p */

......

......

free( p ) /* 应用程序结束前务必释放内存 */

}

至于说中间的程序结构的架构,就需要靠自己上机编写、并亲自调试程序了。因为任何一个程序的最终正确运行结果(可以说是100%的程序),都是必须在编程环境下面调试出来的,而不是在纸上写出来就能够保证通过的。

在纸上写出来的部分源代码,只能够是给你提供一个大致的编程思路供参考。

第一种方案,动态分配加重分配

优势:一次循环

劣势:频繁申请内存

#include <stdio.h>

#include <stdlib.h>

int main()

{

int i = 0, j = 1

char *A = "Hello world!"

char *B = (char *)malloc(j)

while (*(A + i) != '\0')

{

*(B + i) = *(A + i)

i++

j++

B = (char *)realloc(B, j)

}

puts(B)

free(B)

return 0

}

第二种方案,先求长度再动态分配

优势:只申请一次内存

劣势:两次循环

#include <stdio.h>

#include <stdlib.h>

int main()

{

int i = 0

char *A = "Hello world!", *B = NULL

while (*(A + i) != '\0') i++

B = (char *)malloc(i + 1)

while (i >= 0)

{

*(B + i) = *(A + i)

i--

}

puts(B)

free(B)

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11630418.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存