C语言如何给动态分配的数组赋值

C语言如何给动态分配的数组赋值,注意回答如果是使用循环去复制的大神们就省省力,不用去敲键盘回答了谢谢,
int *b = (int *)malloc(3 * sizeof(int));
b = {4,5,6}; //这种形式是错误的·

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;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-07
那样赋值也只能用可变参了.
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 最后一个是关键点

本回答被提问者采纳
第2个回答  2013-07-28
int *b;
b=(int *)malloc(3 * sizeof(int));
首先分配数组空间,现在假设要对数组的第1个元素赋值为4,第2个为5,第3个为-4
*(b+0)=4;
*(b+1)=5;
*(b+2)=-4;
第3个回答  2013-07-28
如果都知道要赋多少个值了,动态分配有何意义……

c语言里面怎么给一个用malloc申请了动态空间的数组赋值
p=(int *)malloc(sizeof(int)*n);那么p就相当于数组p[n]的基地址了,所以对它赋值只要用数组的写法:p[i]=x;就可以了

C语言数组动态赋值
输入整型数组,这样循环是可以的。scanf输入格式没有指定,默认是空格分割。也就是说,你要么输入一个数就回车,再输第二个。要么连续输入多个数,用空格分割。看看,你输入格式对不对。

C语言如何循环赋值
你的需求应该是动态数组,参考代码如下:include<stdio.h>#include<stdlib.h>int main(void){int *a;int i,j;scanf("%d",&i);a=(int*)malloc(i*sizeof(int));if(a==NULL){printf("error");return 1;}for(int j=0;j<i;j++)a[j]=j;for(int j=0;j...

C语言数组的多种赋值方式
数组在C语言中是基本数据结构之一,能够高效存储和操作数据。数组的赋值方式多样,理解不同方法的应用场景有助于提升编程效率。声明数组后,直接赋值是常见的操作方式之一。例如,可以使用`int a[3] = {0};`初始化一个含有三个元素的整型数组,并将其所有元素赋值为0。若声明时未指定元素值,系统将默...

c语言:怎样用malloc函数动态分配二维数组,使之可输入数组的行数和每行...
mem = (int (*)[4])malloc(sizeof(int(*)[4]) * row); \/\/ 分配row行, 4列的数组 \/\/ 分别为二维数组的第一维各个元素赋值。mem[0][0] = 1;mem[0][1] = 2;mem[0][2] = 3;mem[0][3] = 4;\/\/ 打印二维数组的各个元素的值 printf("%d, %d, %d, %d", mem[0][0]...

C语言怎么用动态内存分配几个指针变量,比如下面这个程序
分配指针数组注意分配的大小和类型转换:int **b = (int **)malloc(5 * sizeof(int *));然后对每个数组成员赋值:b[0] = &daxie;基本上就是这样。

C语言如何给用函数二维数组动态赋值
1、当成普通数组使用,用for循环即可赋值。2、例程:include include 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 <...

求高手C语言数组和数组之间能直接赋值吗
此外,如果数组中包含动态分配的内存空间,直接赋值并不能保证目标数组也获得同样的内存空间。在这种情况下,需要使用其他方法来确保正确复制数据和内存空间。总之,C语言中数组和数组之间可以直接赋值,前提是数据类型和大小相匹配。这种操作是对数组元素值的简单复制,并不会改变数组在内存中的位置。在实际...

C 中动态数组的一个小问题……
在讨论C语言动态数组的赋值问题时,我们通常会将数组中的元素逐一赋值。编译器会在给A[0]赋值为0后,再调用memset进行其他元素的初始化。尽管memset的执行时间通常较短,但在不同场景下的表现却有显著差异。为了对比,我们进行了如下实验:在数组大小分别为1000、10000、100000和1000000时,分别使用for循环...

C语言动态分配二维数组问题
而第二句的则是首地址加偏移量,然后赋值。当然,如果只是做赋值操作,这两句完全可以说是等价的。但是,在楼主的程序里面,这个p的指针则是要作为返回值的。自加之后的指针,也就是做了*p++操作后的的首地址,自然已经变成自加之后的了。而做*(p+i)后,p指针的首地址并没有发生变化。所以,在...

相似回答