---摘要:C语言学习个人向记录-数组和指针---
数组和指针
数组
初始化
初始化示例,下面这个是写死的
1 | const int days[MONTHS]={31,28,31,30,31,30,31,31,30,31,30,31} |
指定初始化器
1 | int days[MONTHS]={31,23,[4]=31,34,231,[1]=3}; |
其实不太知道这个为啥要叫“指定初始化器”
可能是个翻译问题
用下标指定某个数
多出来的会顺序指给下几个数
后面的指定覆盖前面的指定
多维数组
指针和数组
指针指的数组头,也就是数组名
1 | double date[]; |
指针操作
const 用来保护数组
一般变量,用指针何必呢,直接搞一个副本对吧
然而数组,你每次都去复制肯定不行,缓存遭不住
于是函数调用数组的时候,一般都是调用其指针
出现数组被各种函数加工的情况
我们要保护数组的值,下标也不能超边界,更不能修改未初始化的指针指向的值
1 | viod show_array(const double *ar,int n); |
复习一下数据类型的大小,要不容易搞混
类型 | 16位 | 32位 | 64位 |
---|---|---|---|
char | 1字节 | 1字节 | 1字节 |
*指针 | 2字节 | 4字节 | 8字节 |
short int | 2字节 | 2字节 | 2字节 |
int | 2字节 | 4字节 | 4字节 |
long | 4字节 | 8字节 | 8字节 |
long long | 8字节 | 8字节 | 8字节 |
u int | 2字节 | 4字节 | 4字节 |
float | 4字节 | 4字节 | 4字节 |
double | 8字节 | 8字节 | 8字节 |
可以看出,不同的系统主要是指针大小差距大。。。
当你在储存一个字符的时候,也要用8个字节
1 | int zippo[4][2]={{2,3},{6,8},{2,7},{9,0}}; |
复合字面量
是这样的,通常你可以在定义某类型的变量时,直接指定一个值
1 | int i1=5; |
那么指针呢,A,是不是尬住了
1 | #include<stdio.h> |