正文
c语言函数动态数组参数 c语言定义动态数组函数
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
C语言 动态二维数组能否做函数参数?
二级指针用c语言函数动态数组参数的没有错,但是这两部分要换换位置
for(t=0;tm;t++)
a[t]=(float *)malloc(m*sizeof(float));
if(*a==NULL)
{
printf("out of menory,press any key to....");
exit(0);
}
应该先检查申请二级指针内存成功与否再使用,而且应该是if(a==NULL),而不是if(*a==NULL)
void search_1(float *p1,int n,int m)
这个函数是想查找在这个方阵中的最大值吧?那么应该这样c语言函数动态数组参数:
void search_1(float **p1,int n,int m)
里面怎么实现,c语言函数动态数组参数你应该会的,你用二级指针很熟练的,理解很正确
动态数组c语言 求助!
#include stdio.h
#include stdlib.h
#include time.h
#include malloc.h
#define RND_MAX 100
#define RND_MIN 50
#define MAX 200
/*用于产生随机数*/
void GenData()
{
FILE *fp = fopen("Random.txt", "w");
int i;
int mod = RND_MAX - RND_MIN;
int num;
if(fp==NULL) return;
srand(time(NULL));
num = rand() % mod + RND_MIN;
for(i=0;iMAX;i++)
{
num = rand() % mod + RND_MIN;
fprintf(fp, "%d,", num);
}
fprintf(fp, "%d", num);
fclose(fp);
}
void GetData(int *a, int n)
{
FILE *fp = fopen("Random.txt", "r");
int i;
char x;
int *p = a;
if(fp==NULL) return;
for(i=0; in !feof(fp); i++)
fscanf(fp, "%d%c", p++, x);
fclose(fp);
}
void Display(int *a, int n)
{
int i;
for(i=0;in;i++)
{
printf("%d", a[i]);
if(i%8 == 7) printf("\n");
else printf("\t");
}
printf("\n");
}
double GetAverage(int *a, int n)
{
int count = 0;
int i;
for(i=0; in; i++) count += a[i];
return (double)count / n;
}
int GetIndex2(int *a, int n, double x)
{
int index = n-1, i;
double min = (a[index] - x) * (a[index] - x), pc;
for(i=n-2;i = 0;i--)
{
pc = (a[i] - x) * (a[i] - x); /* 保证偏差都是正数,以便于比较 */
if(min pc)
{
index = i;
min = pc;
}
}
return index;
}
int GetIndex1(int *a, int n, double x)
{
int index = 0, i;
double min = (a[index] - x) * (a[index] - x), pc;
for(i=1;in;i++)
{
pc = (a[i] - x) * (a[i] - x);
if(min pc)
{
index = i;
min = pc;
}
}
return index;
}
void main()
{
int * a = NULL, n, readNum, index;
double aver;
char c;
/*GenData()*/ /*用于生成一个随机数的文件*/
while(1)
{
printf("请输入元素个数(0退出):");
readNum = scanf("%d", n);
if(readNum == 1)
{
if(n == 0) break;
if(a)
{
free(a);
a = NULL;
}
a = (int *)malloc(sizeof(int) * n);
GetData(a, n);
printf("原始数据:\n");
Display(a, n);
aver = GetAverage(a, n);
printf("平均值: %.6f\n", aver);
index = GetIndex1(a, n, aver);
printf("与平均值最接近的下标最小的元素:a[%d] = %d\n", index, a[index]);
index = GetIndex2(a, n, aver);
printf("与平均值最接近的下标最大的元素:a[%d] = %d\n", index, a[index]);
}
else
{
printf("输入错误,请输入一个数字!\n");
while((c = getchar()) != '\n' c != EOF); /*清除输入缓冲*/
}
}
}
c语言函数怎么调用数组部分
一、数组可定义为全局变量,函数直接调用。
二、数组可定义为局部变量,再通过参数传递到函数中调用(实参传数组名,表示数组首地址,也可通过指针或数组名+数字来传递数组局部地址)。
三、main函数想要调用函数返回的数组,可用static定义静态变量或malloc定义动态数组(字符串常量也可返回使用,但局部变量,在函数调用结束会被释放,不能作为返回地址使用)。
下面是演示代码:
#include stdio.h
#include string.h
#include malloc.h
char str1[]="我是全局变量数组";
char *fun0(char str2[]);
char *fun1();
char *fun2();
int main()
{
char *str3=NULL,*str4=NULL,*str5=NULL;
char str2[]="我是main函数的局部数组变量";
str3=fun0(str2);
printf("str3:%s,fun函数调用结束,我的地址依然可以使用\n",str3);
str4=fun1();
printf("str4:%s,fun函数调用结束,我的地址依然可以使用\n",str4);
str5=fun2();
printf("str5:%s,fun函数调用结束,函数结束不会自动释放\n",str5);
free(str5);
return 0;
}
char *fun0(char s[])
{
static char str3[]="我是fun函数申明的静态数组变量";
printf("str1:%s,fun函数可以直接调用\n",str1);
printf("str2:%s,fun函数通过参数将我的地址传进来\n",s);
return str3;
}
char *fun1()
{
char *str4="我是fun1函数的字符串常量";
return str4;
}
char *fun2()
{
int len;
char sTemp[]="这是一个临时数组,之后用于给mallc申请的地址传值,传递内容为:(我是fun函数通过mallic申请的数组)";
char *str5=NULL;
len=strlen(sTemp+63);
str5=(char *)malloc(sizeof(char)*len+1);
if(!str5)return NULL;
strcpy(str5,sTemp+63);
str5[len-2]=0;
return str5;
}
C语言如何定义动态数组
C语言定义动态数组需要用到动态内存分配函数,参考代码如下:
#includestdio.h
#includestdlib.h
int
main()
{
int
*a=NULL,n,i;
scanf("%d",n);
a=(int
*)malloc(n*sizeof(int));
for(i=0;in;++i)
a[i]=i;
for(i=0;
in;
++i)
printf("%d
",a[i]);
free(a);
a=NULL;
return
0;
}
C语言二维动态数组作为函数形参问题
调用sum(a,x,m,i)的时候,x还没初始化赋值呢,当然不对了
另外前边的m和n都减一是怎么考虑的,减了一后边用到了m和n,malloc(sizeof(int*)*m)申请的内存还符合m行n列的要求么?
……
m=m-1;
n=n-1;//输出数组行数与列数
a=(float**)malloc(sizeof(int*)*m);
……
*(a+i)=(float*)malloc(sizeof(int)*n);
……
r=(float*)malloc(sizeof(int)*m);
d=(float*)malloc(sizeof(int)*m);
x=(float*)malloc(sizeof(int)*m);
……
c语言中的动态数组
程序中的第一个for循环语句和scanf语句之间的分号是多余的。导致程序错误。
c语言函数动态数组参数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言定义动态数组函数、c语言函数动态数组参数的信息别忘了在本站进行查找喔。