C语言记忆强化1

语言精髓:指针,数组,结构体,其他语言所没有的底层驱动管理
那么计划章节:10章 指针与数组 12章存储类,链接,内存管理 13章文件输入输出
14章结构和其他数据表示
15章 位操作
16章C预处理

10章指针与数组
数组是由一系列类型相同的元素组成
假如用的是ANSI之前的编译器,初始化数组的时候需要加上static
设定只读数组的时候最好加上const
数组可以被定义为多组存储类
编译器如果做得好的话,没有初始化的部分会自动化为0

编译器C99增加的新特性:指定初始化项目
可以指定数组的某一项初始化,比如 int arry[6] = {[5] = 212};
无效的数组赋值:
Int oxen[SIZE] = {5,3,2,8};
Int yass[SIZE];

Yass = oxen ; 不允许
Yass[SIZE] = oxen[SIZE]; 不正确
Yass[SIZE] = {5,3,2,8}; 不起作用

声明数组的时候必须注意数组边界
为了解决数组越界的问题,最好在使用数组大小的地方都引用符号常量

多维数组
超过了最大个数会报错,没有的就会为0

指针和数组

各个类型申请的空间大小

等价:
dates + 2 = &date[2] 相同地址
*(dates+2) = date[2] 相同值

我错了,我明白了。
这个*是一个运算符而不是标志符,是间接运算符
这也是为什么

#include

int main()
{
    int a[5] = {1,2,3,4,5};
    printf("a = %x\n",a);
    printf("&a = %x\n",&a);
    printf("&a[0] = %x\n",&a[0]);
    printf("*(int*)&a = %x\n",*(int*)&a);
    printf("*&a = %x\n",*(&a));
    printf("*&a[0] = %x\n",*(&a[0]));
    return 0;

}

加了(&a))的值为1

*date+2 第一个元素加二的值
*(date+2) 第三个元素的值

指针,数组,函数

Int sum(int *arr,int n)
{
Int i;
Int total;
For(i = 0;i<10;i++)
{
Total += arr[i];
}
Return total;
}

Int sum(int arr[],int n)
不仅指向int的指针,还能指向某一个数组元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值