摘要:声明,赋值,连续赋值,memcpy,memset,拼接
前一篇文章已经讲述了动态数组的定义与使用,由于项目大部分运算为矩阵运算,所以用到数组的地方会相对较多,这里再介绍一下数组的一些常用的运算方法。
int a[3] = {1,2,3};是可以的,符合语法规范
int a[3];
a[3] = {1,2,3};则不符合语法规范,这时只能进行元素的单独赋值
int a[3];
a[0] = 1;
a[1] = 2;
a[2] = 3;或者使用循环进行变量赋值
int a[3];
for(int i = 0; i < 3; i++)
a[i] = i + 1;这里的a[3]代表定义数组有3个元素,没有a[3]这个值,最后一个数是a[]
在初始化赋值中,静态数组可以直接使用int a[3] = {0};进行初始化赋值,这里还有另外一种方法就是使用memset函数进行初始化操作,memset的函数原型为
void *memset(void *s, int ch, size_t n);将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
(注意:这里是按字节进行替换的,所以int型不能设置成别的数,因为int是4个字节,而设置是一个字节)
memset函数的使用如下:
int a[3];
memset(a,0,sizeof(int)*3);此种赋值方式与声明时进行赋值的不同可以体现在动态数组中,因为动态数组不能在声明时进行初始化,而memset却可以对动态数组进行初始化,对动态数组的初始化如下:
int *a;
a = (int*)malloc(sizeof(int)*5);
memset(a,0,sizeof(int)*5);每个元素进行赋值:
int a[3],b[4];
int c[7];
for (int i = 0; i < 7; i++)
{ if (i <3)
c[i] = a [i];
else
c[i] = b [i - 3];
}使用memcpy函数,memcpy的函数原型为
void *memcpy(void *dest, const void *src, size_t n);功能为从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中
使用memcpy如下:
int a[3],b[4];
int c[7];
memcpy(c,a,sizeof(int)*3);
memcpy(c+3,b,sizeof(int)*4);原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。