C语言如何给动态分配的数组赋值
C语言如何给动态分配的数组赋值,注意回答如果是使用循环去复制的大神们就省省力,不用去敲键盘回答了谢谢,int*b=(int*)malloc(3*sizeof(int));...
C语言如何给动态分配的数组赋值,注意回答如果是使用循环去复制的大神们就省省力,不用去敲键盘回答了谢谢,
int *b = (int *)malloc(3 * sizeof(int));
b = {4,5,6}; //这种形式是错误的· 展开
int *b = (int *)malloc(3 * sizeof(int));
b = {4,5,6}; //这种形式是错误的· 展开
4个回答
展开全部
1、当成普通数组使用,用for循环即可赋值。
2、例程:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int *a=NULL;
int i;
a=malloc(sizeof(int)*10);/*动态创建一个有10个int元素的数组*/
if (a==NULL) { /*a==NULL表示空间分配失败*/
fprintf(stderr,"MEMORY ERROR");
return -1;
}
for (i = 0; i < 10; i++) {
a[i]=i; /*对数组进行赋值操作*/
}
free(a);/*动态分配的空间需要用free()函数释放*/
return 0;
}
展开全部
那样赋值也只能用可变参了.
void set(int *value,int num,...)
{
for(int i=0;i<num;i++)
value[i]=*(int*)((char*)&num+i*4+4);
}
int *b = (int *)malloc(3 * sizeof(int));
set(b,3, 4,5,6);//set (设置变量,设置的数量,值1,值2...)
void set(int *value,int num,...)
{
for(int i=0;i<num;i++)
value[i]=*(int*)((char*)&num+i*4+4);
}
int *b = (int *)malloc(3 * sizeof(int));
set(b,3, 4,5,6);//set (设置变量,设置的数量,值1,值2...)
追问
恩,这个可以有,只是有个小小的瑕疵:value[i]=*(int*)((char*)&num+i*4+4);这条代码会降低可移植性,不同的机器上运行的话可能会得到不同的结果,使用标准的C提供的一些操作stdarg.h
va_start va_end va_arg 最后一个是关键点
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int *b;
b=(int *)malloc(3 * sizeof(int));
首先分配数组空间,现在假设要对数组的第1个元素赋值为4,第2个为5,第3个为-4
*(b+0)=4;
*(b+1)=5;
*(b+2)=-4;
b=(int *)malloc(3 * sizeof(int));
首先分配数组空间,现在假设要对数组的第1个元素赋值为4,第2个为5,第3个为-4
*(b+0)=4;
*(b+1)=5;
*(b+2)=-4;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果都知道要赋多少个值了,动态分配有何意义……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询