一,数组:
(a) 一维数组定义,初始化:
int a[10]={6,4,3,2,6,7,3,4,6,2,3,4};
char c[]={'a','b','c','d'}; //对全部元素赋值时可以省略数组大小。
int a[10]={1,2,3}; //可以只对数组部分元素初始化。
访问数组元素方式:a[9]; //注意数组越界。
(b) 二维数组定义,及初始化:
int a[2][3]={{1,2,3},{4,5,6}};//分行初始化
int a[2][3]={1,2,3,4,5,6};//不分行初始化
int a[2][3]={{1,2},{4}}; //对二维数组a部分元素初始化。
int a[][3]={{1,2,3},{4,5,6}}; //省略第一维的数组长度
int a[2][3]={1,2,3,4,5,6};//初始化全部数组元素。
int a[2][3]={1,2,3};//初始化部分数组元素,
int a[]{3]={1,2,3,4,5,6};//初始化全部元素
当使用线性初值表省略第一维元素个数时,该值计算方法为:向上取整(线性初值表项数/第二维元素个数)例如:int a[][3]={1,0,0,0}; 则第一维元素个数为「4/3」=2。
访问二维数组元素:a[0][1];
(c),指针:
定义:用来存储指向内存数据单元地址的变量。数据类型 *变量名;
int *i , double * d1 , int *ip=&i;
如果指针指向的是一种不确定的数据类型可以用void 进行定义。指针赋值时,数据类型要一致,不然就要进行强制转换。
2,指针运算:"*"和"&“: * 称为指针运算符。它有2种含义。a,在定义指针变量时说明p是一个指针变量,当*出现在指针变量表达式左边时,表示访问指针所指向对象的内容。书写格式如下:*指针变量表达式。
p=&a;
p++; //指针p后移4个字节
*p++; //先读取p指向的变量a的值5,然后使指针后移4个字节
(*p)++; //读取p指向的变量a的值,然后使p指向的变量a自增1
*++p; //先使指针p后移4个字节,然后读取p指向的变量的值
++*p; //将p指向的变量a自增1
*q++=*p++ ; //相当于*q=*p,q++,p++
两指针相减: 当2个指针指向同一个数组时,2个指针相减才有意义。2个指针相减表示2个指针之间数组元素的个数,结果为一个整数。
两个指针比较:比较2个指针所指向的队形在内存的位置关系。是否为空。
Const指针:数据类型* const 指针变量=变量名 。
指向一维数组的指针:int (*pa)[2]; int a[3][2]={...}; pa=a[0];
类型名 (*指针名)[常量表达式];
字符指针和字符串
通过指针访问字符串。字符数组名与字符指针名等效。char p[] ==char *p