C语言如何定义动态数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何定义动态数组相关的知识,希望对你有一定的参考价值。
不要那种手动输入数组长度的,
参考技术A C语言定义动态数组需要用到动态内存分配函数,参考代码如下:#include<stdio.h>
#include<stdlib.h>
int
main()
int
*a=NULL,n,i;
scanf("%d",&n);
a=(int
*)malloc(n*sizeof(int));
for(i=0;i<n;++i)
a[i]=i;
for(i=0;
i<n;
++i)
printf("%d
",a[i]);
free(a);
a=NULL;
return
0;
参考技术B #include
<stdio.h>
#include
<stdlib.h>
int
main()
int
num,*p=0,i;
printf("输入数组元素个数:");
/*输入数组元素个数,保存到变量num中*/
scanf("%d",&num);
/*动态分配数组存储空间*/
p
=
(int
*)malloc(sizeof(int)*num);
/*输入数据*/
for(i=0;i<num;i++)
scanf("%d",&p[i]);
/*输出数据*/
for(i=0;i<num;i++)
printf("%d
",p[i]);
/*删除动态创建的数组*/
free(p);
return
0;
参考技术C stdlib.h头文件中有4个函数,可以用来动态分配内存。灵活运用它们,就能实现数组的动态分配和数组存储空间的自动扩充。
这4个函数是:
calloc、realloc、mylloc和free。
c语言动态库的加载问题!!!!请高手指点!!!!!!!!
其实是在看一个linux 下so动态库的实例的时候感觉不理解,假如我的main.c里调用一个lib.so里面的函数foo()写main的时候前面dlopen加载好了lib.so后面直接写foo()这样不会报错么???我找遍工程里没有一点对foo的定义就直接用了,我们讨论的是在编译的阶段main没跑起来没加载上so怎么就知道有foo这个玩意???真实编译起来还真的没报错,这个实在不好理解啊
只需要在使用到这些公用函数的源程序中包含这些公用函数的原型声明,然后在用gcc命令生成目标文件时指明动态库名进行编译,gcc将会从动态库中将公用函数连接到目标文件中。并没有你理解的需要main跑起来才会加载so追问这里讨论的是一个非gcc连接库文件的场合,假设项目组有两个部门支撑组负责动态库文件部分,而且他们在目标机里面先一步下载进去lib.so了,模块组现在在电脑上做一个新的功能的模块下载进目标机,并调用lib.so,支撑组处于保密需求不能把lib.so给其他部门,所以模块组电脑上就没有lib.so也没有办法gcc把库连接进去了,所以用dlopen调用
参考技术A dlopen 是肯定不会“定义”foo的,它只能加载。肯定有哪里定义过 foo 了。把整个项目 Control-F 一下。
以上是关于C语言如何定义动态数组的主要内容,如果未能解决你的问题,请参考以下文章