c语言数组总结

1. 初始化方法

第一种:完全初始化。依次赋值

如:a[5] = {2,3,4, 5, 6};

a[] = {1,2, 3, 4, 5, 6};

 

第二种:不完全初始化。初始化式中的值从a[0]开始,依次向后赋值,不足的默认用0填充赋值

如:a[5] = {4, 5, 6};

 

第三种:间隔初始化。未赋值的默认用0填充赋值

如:a[5]={100, [4] = 99};

a[5]={[1]=100, [4] = 99};

a[3000]={[5] = 200};

 

注:数组初始化之后不能再整体重新赋值,但可以单独重新赋值

 

2. 指针与数组的结合

数组名:数组名表示数组的首元素首地址,因此作右值可以直接赋值给指针。

 

如果有 int a[5];

则 a和&a[0]都表示数组首元素a[0]的首地址。(指向首元素)

而&a则表示数组的首地址。(指向整个数组)

 

3. 用printf输出字符串(字符数组)

如:

 

#include <stdio.h>

int main (int argc, char *argv[])

{

char a[] = "m\\0yp";

char* p = "myp";

char* p1 = "my\0p";

/*

双引号做了3件事: 

1)申请了空间(在常量区),存放了字符串 

2) 在字符串尾加上了'\0' 

3)返回首元素的首地址

 返回的地址 赋值给了 p 

*/

printf("%s\n", a);//%s对应的是一个char*类型的变量,输出的是从这个地址开始直到0/结束的字符

//结果输出的是m\0yp

printf("%s\n", p);//结果输出的是myp

printf("%s\n", p1);//结果输出的是my

return 0;

}

 

4、数组中几个关键符号(a a[0] &a &a[0])的理解(前提是 int a[10])

结合左值右值去理解

(1)a不能做左值(因为数组在初始化之后就不能进行整体操作了),做右值表示首元素的首地址等同于&a[0]

(2)a[0]做左值时表示数组第0个元素对应的内存空间;做右值时表示数组第0个元素的值

(3)&a不能做左值;&a做右值时表示整个数组的首地址。

(4)&a[0]不能做左值,做右值时表示首元素的首地址等同于a。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值