首页 > 编程知识 正文

c语言结构体数组初始化,定义一个整型数组并初始化

时间:2023-05-06 04:22:00 阅读:235236 作者:4481

数组空间的初始化就是为每一个标签地址赋值。按照标签逐一处理。如果我们需要为每一个内存赋值,假如有一个int a[100];我们就需要用下标为100个int类型的空间赋值。这样的工作量是非常大的,我们就想到了让编译器做一些初始化操作,初始化操作是第一次赋值,第二次赋值就不能再这样赋值了。

int a[10]=空间;

我需要给它一个空间,让它对这里面的值进行批量处理;比如int a[10]={10,20,30}; //a[1]=10,a[2]=20,a[3]=30,a[4]=…=a[9]=0所以实际上还是批量内存拷贝的结果,未赋值的结果就是0。初始化与我们逐一赋值的效率是一样的。批量拷贝仅限于第一次赋值。

注意:数组空间的初始化和变量的初始化本质不同,尤其在嵌入式的裸机开发中,空间的初始化往往需要库函数的辅助。

char buf[10]={‘a’,’b’,’c’}; //c的字符串有一个重要的属性,字符串结尾有一个字符’’代表字符串的结束。因为我们这里为字符串空间定义了10个字符的大小,但是有时候我们并没有使用完这10个字节,打印的时候10个字节的打印也是错误的,所以为了给字符串一个结束的标志,让其它的函数比如printf函数输出的时候知道它的结尾。

char buf[]=”abc”; //省略数组大小,C会为数组指定大小,这里就是三个字符加上一个结尾标志,数组大小就是4

char buf[10]={“abc”};

char buf[10]=“abc”; //将三个字符批量拷贝到它分配的空间,末尾加’’

char *p=“abc”; //先给三个字符分配空间,再将指针指向字符串的首地址,这指向的是一个常量字符串。

buf[2]=’e’; //这是可以的

p[2]= ’e’; //这是不可以的,p指向的是常量区

测试代码如下

我们将这个字符串作为printf函数的参数,它返回的实际上是常量字符串的首地址,而我们这里将它作为一个整型来打印,有一个警告,应该把它作为无符号整型(内存地址是正整型的)来打印。

运行结果如下

可以看到的确打印了一个地址,说明双引号返回的的确是一个地址,正好和我们前面介绍的字符数组获取到它的首地址,然后依次拷贝,但是字符指针就直接得到它的地址存储。这些不同的操作就是数据类型具体的操作了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。