黑马程序员 学习日记(三)-数组
来源:互联网 发布:淘宝劲霸旗舰店真的吗 编辑:程序博客网 时间:2024/05/18 01:01
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
数组是一族有序数据的集合。数组中各数据的排列是有一定规律的,下标代表数据在数组中的序号。用一个数组名s和下标10 例如s[10]来访问数组中的某个元素。数组中的每一个元素都是属于同一个数据类型。
一维数组的定义:
类型符 数组名[常量表达式]
数组定义需要一些注意:
1.数组名符合标识符命名规范。
2.再定义数组时,需要指定数组中元素的个数。
3.数组的常量表达式不能包含变量。
4.在某些情况下。例如
void func(int n)
{
int a[n];
}
一维数组的初始化
1.在定义时可以对全部或部分元素赋值,
例如:int a[5] = {1,2,3,4,5}; int a[5]={1,3,5};未赋值的变量自动补0;
2.当对全部元素赋值的时候 可以不指定数组长度
例如:int a[] = {1,2,3,4,5};
数组实际用例:
用数组来处理fibonacci数列问题
#include <stdio.h>int main(){ int i; int f[20]={1,1}; for(i=2;i<20;i++) f[i] = f[i-2] +f[i-1]; for(i=0;i<20;i++) { if(i%5==0) printf("\n"); printf("%12d",f[i]); } printf("\n"); return 0;}
二维数组
类型说明符 数组名[常量表达式][常量表达式]
二维数组就是一个一维数组每个元素都是一个一维数组。
二维数组的初始化类似于一维数组。有固定元素的二维数组赋值时,不能省略第二个纬度;
二维数组举例
用二维数组实现矩阵反转
#include <stdio.h>int main(){ int a[2][3] = {{1,2,3},{4,5,6}}; int b[3][2], i, j; printf("array a: \n"); for(i=0; i<=1; i++) { for(j=0;j<=2;j++) { printf("%5d",a[i][j]); b[j][i]=a[i][j]; } printf("\n"); } printf("array b:\n"); for(i=0; i<=1; i++) { for(j=0;j<=1;j++) { printf("%5d",b[i][j]); } printf("\n"); } return 0;}
字符数组
可以通过a[10]={"adfdsfsd"};或者a[10]="adfdsfsd";来定义字符数组。字符数组需要考虑字符串后面的'\n';
通过指针去引用数组的元素
当p指向数组时
数组元素的指针就是数组元素的地址
int a[10];
int *p;
p=&a[0];
p指向a的首元素。可以通过*(p+n) 来访问a[n];
需要特别注意的是数组指针与指针数组
指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针
数组指针:a pointer to an array,即指向数组的指针
还要注意的是他们用法的区别,下面举例说明。
int* a[4] 指针数组
表示:数组a中的元素都为int型指针
元素表示:*a[i] *(a[i])是一样的,因为[]优先级高于*
int (*a)[4] 数组指针
表示:指向数组a的指针
元素表示:(*a)[i]
注意:在实际应用中,对于指针数组,我们经常这样使用:
这跟上面指针数组定义所表达的意思是一样的,只不过采取了类型变换。
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
详细请查看:www.itheima.com
- 黑马程序员 学习日记(三)-数组
- 黑马程序员--学习日记(二)数组
- 黑马程序员 学习日记(三)
- 黑马程序员 学习日记(三)
- 黑马程序员学习日记三
- 黑马程序员-[C语言字符串和数组]学习日记(三)
- 黑马程序员 日记(三)
- 黑马程序员_java学习日记_数组
- 黑马程序员-JAVA学习日记-数组
- 黑马程序员-C学习日记-数组
- 黑马程序员--学习日记(三)面向对象基础
- 黑马程序员学习日记 (三)面向对象
- 黑马程序员-iOS学习日记(三)面向对象-方法
- 黑马程序员-C语言学习日记(三)流程控制
- 黑马程序员--学习日记
- 黑马程序员java学习日记——数组
- 黑马程序员-字符流数组对象学习日记
- 黑马程序员_学习日记三_多线程一
- 2005年上海交通大学计算机研究生机试真题:数字反转
- python学习笔记三(网络编程初步)
- weblogic中优先加载应用中的jar包
- Don't Make Javascript Equality Look Worse Than It Is
- 如何在weblogic启动时让其加载指定的jar库文件
- 黑马程序员 学习日记(三)-数组
- 弹球游戏
- C语言数据类型及转换
- Alberto Cairo Tapestry 2014演讲笔记
- 程序员离职原因经典总结
- vim 编码问题
- 内存屏障(__asm__ __volatile__("": : :"memory"))
- map与hash_map
- Java内存管理机制