指针与数组
指针初始化时注意事项
- 1.不能使用未经赋值的指针变量进行间接引用
int *p;
*p=100; /*指针变量P未经赋值*/
- 2.不能通过指定具体地址的方式对内存单元进行间接引用
int *p;
p=200; /*不能直接指定内存单元的地址*/
- 3.两个类型不同的指针间,不能直接赋值
int a,*p;
float x,*q;
p=&x;
q=&a; /*指针的类型不同,不能直接赋值*/
指针与一维数组
- 1.如果a是一维数组,那么a+i就是数组元素a[i]的地址,从而*(a+i)就代表数组元素a[i];
- 2.如果a是一维数组,而指针变量p指向a[0],那么p+i就是数组元素a[i]的地址;从而*(p+i)就代表数组元素a[i];
说明:
- 1.数组和指针变量是不是可以完全互换呢??? 当然不是,数组名是指针常量,而非指针变量,它始终指向数组的0号元素。
- 2.一个指针可以与整形数据相加减;两个相同类型的指针可以相减、相比较,但不能相加。
指针与二维数组
1.用行数组名引用二维数组的元素 定义int a[i][j]
- 1.既然a[i]是第i行的数组名,那么a[i]就是第i行0号元素a[i][0]的地址;
- 2.a[i]+j就是数组a[i][j]的地址;
- 3.从而*(a[i]+j)也就是数组元素a[i][j]。
2用二维数组名引用二维数组的元素