您的位置:首页 > 编程语言 > C语言/C++

C语言记忆强化1

2016-01-05 14:31 288 查看
语言精髓:指针,数组,结构体,其他语言所没有的底层驱动管理

那么计划章节: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的指针,还能指向某一个数组元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: