C语言中怎么给数组赋初值

kyle 2013-01-10 03:55:39
在C++中我们可以在初始化的同时给其赋初值
size_t test[] ={1, 1};
但是在C中,我开始的时候只是做申明
size_t* test;
申请内存:
test= (size_t *)malloc(2*sizeof(size_t));
然后我该怎么对其赋值成1, 1呢?
test[0] =1;
test[1]=1;
这种方式就不说了,如果数组太大就不适用了

谢谢!
...全文
10583 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiniu021010 2014-04-07
  • 打赏
  • 举报
回复
引用 9 楼 breeze505 的回复:
[quote=引用 7 楼 lin5161678 的回复:] 一个指针一个数组 额 C里面一样可以用 size_t test[] ={1, 1}; 难道有问题??
1.C不支持[]可变数组 2. 那如果我下面要对初始化的值进行修改呢?[/quote] 你可以试一下,size_t test[]={1,1}是可以赋值的,后面括号里面的元素已经能够唯一缺点该数组的大小了
anxier_dic 2013-01-11
  • 打赏
  • 举报
回复
用库函数 memset memcpy fill 这三个都可以,具体用法可以百度或谷歌!
古原争霸 2013-01-11
  • 打赏
  • 举报
回复
c中貌似只能在定义的时候整体赋值,其他时候只能对具体元素赋值
赵4老师 2013-01-11
  • 打赏
  • 举报
回复
“变量赋值”和“变量初始化”不是一回事! “变量赋值”发生在运行期,其写法遵循赋值语法规定。 “变量初始化”发生在编译期或运行期,其写法遵循初始化列表语法规定。
lin5161678 2013-01-10
  • 打赏
  • 举报
回复
只能一个一个修改 不管你是在C 还是 C++ 还是 Java
kyle 2013-01-10
  • 打赏
  • 举报
回复
引用 20 楼 ForestDB 的回复:
不妨不要纠结于这样的细节,说说你在干嘛,想干嘛。 也许有更好的思路。
我现在有个程序需求是这样的: 申明为size_t a[6] = {1,1,1,1,2,3}; //a是一个需要根据实际需要变化的数组 数组a在下面的多个地方都是使用不同的数值,并需要当参数传递给别的函数handleArray(size_t* a,...);
kyle 2013-01-10
  • 打赏
  • 举报
回复
引用 21 楼 lin5161678 的回复:
引用 9 楼 breeze505 的回复: 引用 7 楼 lin5161678 的回复:一个指针一个数组 额 C里面一样可以用 size_t test[] ={1, 1}; 难道有问题?? 1.C不支持[]可变数组 2. 那如果我下面要对初始化的值进行修改呢? size_t test[] = {1, 2, 3, 4}; 这个写法在C语言里面是合法的 你想修改就 test……
那若是全部元素需要修改呢?只能用下面这样一个一个赋值吧? test[0] = .. test[1] = .. ... test[n] = ..
lin5161678 2013-01-10
  • 打赏
  • 举报
回复
引用 9 楼 breeze505 的回复:
引用 7 楼 lin5161678 的回复:一个指针一个数组 额 C里面一样可以用 size_t test[] ={1, 1}; 难道有问题?? 1.C不支持[]可变数组 2. 那如果我下面要对初始化的值进行修改呢?
size_t test[] = {1, 2, 3, 4}; 这个写法在C语言里面是合法的 你想修改就 test[0] = 12;
ForestDB 2013-01-10
  • 打赏
  • 举报
回复
不妨不要纠结于这样的细节,说说你在干嘛,想干嘛。 也许有更好的思路。
kyle 2013-01-10
  • 打赏
  • 举报
回复
那看来最方便的还只能是一个元素一个元素进行赋值修改!?
lee_鹿游原 2013-01-10
  • 打赏
  • 举报
回复
写2个数组.. {4,5,23,45,12} 循环给 {1, 3,58,91,6}; 重新赋值
ForestDB 2013-01-10
  • 打赏
  • 举报
回复
构造数据文件,内容如下(前导0x省略): 04 00 00 00 05 00 00 00 17 00 00 00 2D 00 00 00 0C 00 00 00 (分别对应4, 5, 23, 45, 12) 然后读入到你的变量区域(或者读入再memcpy)
ForestDB 2013-01-10
  • 打赏
  • 举报
回复
{}只能用于初始化,这样说LZ能死心么?
kyle 2013-01-10
  • 打赏
  • 举报
回复
引用 14 楼 lile1234_show 的回复:
引用 13 楼 breeze505 的回复: 引用 12 楼 crazy_samba 的回复:使用 void * memset ( void * ptr, int value, size_t num ); Fill block of memory Sets the first num bytes of the block of memory pointed by ptr to the sp……
晕,我再说一下吧: 比如我要初始化像size_t test[] ={1, 3,58,91,6};(这里只是做测试,实际长度可能更长) 那比如我在下面程序中数组要换成{4,5,23,45,12}这样的内容,该如何实现
lee_鹿游原 2013-01-10
  • 打赏
  • 举报
回复
引用 13 楼 breeze505 的回复:
引用 12 楼 crazy_samba 的回复:使用 void * memset ( void * ptr, int value, size_t num ); Fill block of memory Sets the first num bytes of the block of memory pointed by ptr to the specified val……
楼主别纠结了...你想实现什么呢
kyle 2013-01-10
  • 打赏
  • 举报
回复
引用 12 楼 crazy_samba 的回复:
使用 void * memset ( void * ptr, int value, size_t num ); Fill block of memory Sets the first num bytes of the block of memory pointed by ptr to the specified value (interpreted as an unsigned char).……
这个只能设一个值,不行!
crazy_samba 2013-01-10
  • 打赏
  • 举报
回复
使用 void * memset ( void * ptr, int value, size_t num ); Fill block of memory Sets the first num bytes of the block of memory pointed by ptr to the specified value (interpreted as an unsigned char).
kyle 2013-01-10
  • 打赏
  • 举报
回复
请高手给出具体的程序供膜拜,谢谢!
xiaoxiao8310 2013-01-10
  • 打赏
  • 举报
回复
除memcpy外就得手动赋值了
kyle 2013-01-10
  • 打赏
  • 举报
回复
引用 7 楼 lin5161678 的回复:
一个指针一个数组 额 C里面一样可以用 size_t test[] ={1, 1}; 难道有问题??
1.C不支持[]可变数组 2. 那如果我下面要对初始化的值进行修改呢?
加载更多回复(8)

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧