C的数组与指针

这篇博客详细介绍了C语言中数组和指针的相关知识,包括数组的初始化、变长数组(VLA)、指针的解引用、指针与数组的关系、函数参数中的数组处理,以及const指针的用法。特别提到了C99开始支持的初始化部分元素的数组语法和VLA的限制。还探讨了指针与多维数组的交互,以及如何声明和使用指向多维数组的指针。
摘要由CSDN通过智能技术生成

数组

如果数组中只有部分元素被初始化,则其他未被初始化的元素将会被设为0

C99之后,如果只想初始化数组中的一个元素,可以:int array[6] = { [5] = 212 }; 这样,其他的元素会被设为0

int days[7] = {31, 28, [4] = 31, 30, 31, [1] = 29};

结果:

[0]:31,[1]:29,[2]:0,[3]:0,[4]:31,[5]:30,[6]:31,[7]:0

说明:初始化是从标注出标号的开始,如果一个元素被初始化多次,则有效的是最后一次初始化

用大括号列出数值对数组进行赋值只能用于初始化,而不能用于数组元素赋值

C99和C11都支持变长数组(VLA)。VLA有一些限制,例如不能在声明数组时进行初始化


指针

不能解引用(dereference)一个未初始化的指针。因为创建一个指针变量时,只是分配了存储这个指针的内存,但并没有分配存储数据的内存(即并未给指针所将要指向的变量分配空间)。所以在使用指针之前,它所指向的变量应该是已经被分配了内存的(两种方法,一是将已经存在的变量的地址赋给指针;二是使用malloc)

例如double *p; *p = 2.1; 这就是一个错误的用法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值