C语言杂记 0x06

数组

数组初始化

int a[5] = {[2] = 3};

注意:数组和结构体不同,不能相互赋值

int a[5] = {1,2,};
int b[5] = a;//错误的

数组作为函数的参数时

int function(int array[5]);

查看编译预处理之后、预处理之前的代码
gcc -E main.c

字符串

字符串就相当于字符数组,所有的字符串最后一位都是’\0’
‘\0’就是ASCII码为0的NULL值

字符串是只读的

char c = "Hello world\n"[0];//c = 'H';

但是

"Hello world\n"[0] = ’A';
//编译器会报错说符串字面值是只读的,不允许修改

字符串在做右值使用时自动转换成指向首元素的指针,比如printf函数的具体实现里面第一个参数就是一个指针

printf("Hello");

其实就是传一个指针给printf

初始化字符串的时候记得要进行计算字符串结尾的NULL的长度,如果不计算这个长度,编译器也不会进行报错,对于后期debug会造成很大的麻烦
比如printf函数,当printf函数打印字符串的时候其实就是打印首字符到NULL字符之间的部分,一旦没有NULL字符,最后会出现数组越界的情况,后果可能很诡异

多维数组

char days[8][10] = { "", "Monday", "Tuesday",
                 "Wednesday", "Thursday", "Friday",
                 "Saturday", "Sunday" };

这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值