黑马程序员——IOS基础(数组)
2015-05-18 16:58
225 查看
<a target=_blank href="http://www.itheima.com" target="_blank" style="font-size: 14px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------</a>
类型名 数组名[整型常量表达式]
例如:
Int a[8];
说明:(1)a数组含有8个元素,且每个元素都是整型。
(2)每个元素都有一个下标,第一个元素的下标总为0。
2.一维数组元素的引用
引用形式如下:
数组名 [下标表达式]
说明:(1)在引用数组元素时,数组元素中下标表达式的值必须为整数,下标表达式值的下限为0
(2)一个数组元素实质上就是一个变量名,代表内存中的一个存储单元,一个数组占有一串连续的存储单元
(3)一个数组不能整体引用,数组名是一个存放这个数组的首地址的常量
3.一维数组的初始化
Int a[8] = {0,1,2,3,4,5,6,7,}; /* 依次给数组元素赋初值 */
Int a[8]= { 0 }; /* 当所赋初值少于所定义数组元素个数是,将自动给后面的元素补以初值0 ,
如果所赋初值多于所定义数组的元素个数时,在编译时将给出错误信息*/
Int a[ ]={0,0,0,0,0,0,0,0}; /* 隐含定义了a数组含有8个元素 */
在函数体中函数外部定义的数组名可以认为是一个存放数组元素第一个元素地址的指针变量,只是这个指针变量中的
地址值不可改变,
float a[0], *p, x;
a= &x; a++; /* 这些操作都是非法的,不能给啊重新赋值。 */
p= a+1; /* 指针p将指向数组中的第二个元素,可以通过表达式:a+k获取每个元素的地址 。
也可以通过 *(a+k)的形式来引用数组元素。 */
数组元素可以像普通变量一样作为实参传递给形参,对应的形参必须为同类型的变量。在函数中只对该变量进
行操作而不能在函数中改变对应数组元素中的值。
2.数组名作实参
数组名可以作为实参传送,对应的形参应当是一个指针变量并且类型与数组类型一致。在函数中可以通过该指
针变量来引用调用函数中对应的数组元素,从而对数组元素进行操作而改变其中的值。
3.数组元素地址作为实参
当数组元素地址作为实参时,因为是地址,所以对应的形参也应当是基类型相同的指针变量
/* 对具有10个元素的char类型数组,从下标为4的元素开始,全部设置星号“ * ”,保持前4个元素中的内容不变。*/
程序如下:
#include <stdio.h>
#define M 10
#define B 4
void setstar (char *,int):
void arrout (char *,int);
main( )
{ char c[M]={'A','B','C','D','E','F','G','H','I'.'J'};
setstar (&c[4,M-B]);
arrout(c,M);
{
int i;
for(i=0;i<n;i++)
*(a+i)=' * ';
}
void arrout (char *a,int n)
{
int i;
for (i=0;i<n;i++)
printf("%c",a[i]);
printf("\n");
}
程序运行结果如下:
ABCD******
语句形式如下:
类型名 数组名[常量表达式1] [常量表达式2],. . . . . . ;
int a[3][4];
说明:(1)定义了一个名为a的二维数组。
(2)a数组中每个元素都是整型。
(3)a数组中共有3*4个元素。
(4)a数组的逻辑结构是一个具有如下形式的3行4列的矩阵
第0列 第1列 第2列 第3列
第0行 a[0][0] a[0][1] a[0][2] a[0][3]
第1行 a[1][0] a[1][1] a[1][2]
a[1][3]
第2行 a[2][0]
a[2][1] a[2][2] a[2][3]
2.二维数组元素的引用
引用形式:
数组名 [下标表达式1][下标表达式2]
有数组定义: double w[4][2];
则w[0][1]、w[i][j]都是合法的数组元素引用形式,但每个下标表达式不能超越数组定义中的上、下界。
3.二维数组的初始化
可以在定义二维数组的同时给二维数组的各元素赋初值
int a[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}}; /* 所赋初值个数与元素个数相同 */
int a[4][3]={{1,2},{4,5},{7},{10}}; /* 所赋初值个数少于元素个数,这时系统将自动给该行后面的元素补初值0 */
int a[4][3]={{1,2},{4,5}}; /* 所赋初值行数少于数组行数,系统将自动给后面各行的元素补初值0 */
int a[ ][ ]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}} /* 通过赋初值定义二维数组的大小 */
4.二维数组和指针
二维数组名同样也是一个存放地址常量的指针,其值为二维数组中第一个元素的地址。二维数组元素的地址可以由
表达式&a[i][j]求得,也可以通过每行的首地址来表示。
若0<=i<3、0<=j<4,则a[i][j]的地址可以用以下五种表达式求得
(1)&a[i][j]
(2)a[i]+j
(3) *(a+i)+j
(4)&a[0][0]+4*i+j /* 在i行前尚有4*i个元素存在 */
(5)a[0]+4*i+j
a数组可以用以下五种表达式来引用
(1)a[i][j]
(2) *(a[i]+j)
(3) *(*(a+i)+j)
(4) *(&a[0][0]+4*i+j)
(5) *(a[0]+4*i+j)
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、一维数组的定义和一维数组元素的引用
1.一维数组的定义类型名 数组名[整型常量表达式]
例如:
Int a[8];
说明:(1)a数组含有8个元素,且每个元素都是整型。
(2)每个元素都有一个下标,第一个元素的下标总为0。
2.一维数组元素的引用
引用形式如下:
数组名 [下标表达式]
说明:(1)在引用数组元素时,数组元素中下标表达式的值必须为整数,下标表达式值的下限为0
(2)一个数组元素实质上就是一个变量名,代表内存中的一个存储单元,一个数组占有一串连续的存储单元
(3)一个数组不能整体引用,数组名是一个存放这个数组的首地址的常量
3.一维数组的初始化
Int a[8] = {0,1,2,3,4,5,6,7,}; /* 依次给数组元素赋初值 */
Int a[8]= { 0 }; /* 当所赋初值少于所定义数组元素个数是,将自动给后面的元素补以初值0 ,
如果所赋初值多于所定义数组的元素个数时,在编译时将给出错误信息*/
Int a[ ]={0,0,0,0,0,0,0,0}; /* 隐含定义了a数组含有8个元素 */
二、一维数组和指针
1.一维数组和元素的地址在函数体中函数外部定义的数组名可以认为是一个存放数组元素第一个元素地址的指针变量,只是这个指针变量中的
地址值不可改变,
float a[0], *p, x;
a= &x; a++; /* 这些操作都是非法的,不能给啊重新赋值。 */
p= a+1; /* 指针p将指向数组中的第二个元素,可以通过表达式:a+k获取每个元素的地址 。
也可以通过 *(a+k)的形式来引用数组元素。 */
三、函数之间对一维数组和数组元素的引用。
1.数组元素作实参数组元素可以像普通变量一样作为实参传递给形参,对应的形参必须为同类型的变量。在函数中只对该变量进
行操作而不能在函数中改变对应数组元素中的值。
2.数组名作实参
数组名可以作为实参传送,对应的形参应当是一个指针变量并且类型与数组类型一致。在函数中可以通过该指
针变量来引用调用函数中对应的数组元素,从而对数组元素进行操作而改变其中的值。
3.数组元素地址作为实参
当数组元素地址作为实参时,因为是地址,所以对应的形参也应当是基类型相同的指针变量
/* 对具有10个元素的char类型数组,从下标为4的元素开始,全部设置星号“ * ”,保持前4个元素中的内容不变。*/
程序如下:
#include <stdio.h>
#define M 10
#define B 4
void setstar (char *,int):
void arrout (char *,int);
main( )
{ char c[M]={'A','B','C','D','E','F','G','H','I'.'J'};
setstar (&c[4,M-B]);
arrout(c,M);
{
int i;
for(i=0;i<n;i++)
*(a+i)=' * ';
}
void arrout (char *a,int n)
{
int i;
for (i=0;i<n;i++)
printf("%c",a[i]);
printf("\n");
}
程序运行结果如下:
ABCD******
四、二维数组的定义和二维数组元素的引用
1.二维数组的定义语句形式如下:
类型名 数组名[常量表达式1] [常量表达式2],. . . . . . ;
int a[3][4];
说明:(1)定义了一个名为a的二维数组。
(2)a数组中每个元素都是整型。
(3)a数组中共有3*4个元素。
(4)a数组的逻辑结构是一个具有如下形式的3行4列的矩阵
第0列 第1列 第2列 第3列
第0行 a[0][0] a[0][1] a[0][2] a[0][3]
第1行 a[1][0] a[1][1] a[1][2]
a[1][3]
第2行 a[2][0]
a[2][1] a[2][2] a[2][3]
2.二维数组元素的引用
引用形式:
数组名 [下标表达式1][下标表达式2]
有数组定义: double w[4][2];
则w[0][1]、w[i][j]都是合法的数组元素引用形式,但每个下标表达式不能超越数组定义中的上、下界。
3.二维数组的初始化
可以在定义二维数组的同时给二维数组的各元素赋初值
int a[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}}; /* 所赋初值个数与元素个数相同 */
int a[4][3]={{1,2},{4,5},{7},{10}}; /* 所赋初值个数少于元素个数,这时系统将自动给该行后面的元素补初值0 */
int a[4][3]={{1,2},{4,5}}; /* 所赋初值行数少于数组行数,系统将自动给后面各行的元素补初值0 */
int a[ ][ ]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}} /* 通过赋初值定义二维数组的大小 */
4.二维数组和指针
二维数组名同样也是一个存放地址常量的指针,其值为二维数组中第一个元素的地址。二维数组元素的地址可以由
表达式&a[i][j]求得,也可以通过每行的首地址来表示。
若0<=i<3、0<=j<4,则a[i][j]的地址可以用以下五种表达式求得
(1)&a[i][j]
(2)a[i]+j
(3) *(a+i)+j
(4)&a[0][0]+4*i+j /* 在i行前尚有4*i个元素存在 */
(5)a[0]+4*i+j
a数组可以用以下五种表达式来引用
(1)a[i][j]
(2) *(a[i]+j)
(3) *(*(a+i)+j)
(4) *(&a[0][0]+4*i+j)
(5) *(a[0]+4*i+j)
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
相关文章推荐
- 黑马程序员—IOS基础之C语言—数组与指针
- 黑马程序员——ios基础---C语言:进制、数组
- 黑马程序员——ios开发基础之C语言数组、指针与结构体
- 黑马程序员——IOS基础——Foundation框架——结构体、字符串、数组
- 黑马程序员 ——ios基础 ——#include文件搜索顺序、数组
- 黑马程序员-iOS基础-C语言基础(四)内存剖析、数组、字符串
- 黑马程序员——零基础学习iOS开发——06 字符串、指针、指针和数组、指针和字符串、指针和函数
- 黑马程序员---IOS基础---字符串数组及字符串函数
- 黑马程序员——零基础学习iOS开发——05 C语言:进制、内存储存细节、类型说明符、位运算、数组
- 黑马程序员---IOS基础---数组的概念及用法
- 黑马程序员---iOS学习基础---数组与函数
- 黑马程序员_iOS开发C语言基础之数组
- 黑马程序员--java基础-方法重载与数组
- 黑马程序员--Java基础加强--04.代码简化 书写规律III_数组参数【重载】【数组】【可变参数数组】【泛型可变参数数组】【个人总结】
- 黑马程序员_学习日记40_605基础加强(自定义泛型、装拆箱、foreach、文件操作、字符串与byte数组转换)
- 黑马程序员_ios基础总结7_OC简介
- 黑马程序员——零基础学习iOS开发——01前言
- 黑马程序员——c语言基础:数组和字符串
- 黑马程序员-iOS基础-C语言基础(六)-复杂数据类型及其他
- 黑马程序员——IOS基础——Foundation框架——字典、集合类、NSNumber/NSValue、NSObject、反射