指针与二维数组
-
用1维指针表示2维数组
-
二维数组不可直接使用 int *p = a, 只能使用 int *p = &a[0][0],或者换成:int *p = (int *)a
原因如下:假设有数组int a[3][2],若将二维数组a[3][2]当作一维数组a[3],a指向a[0],a == &a[0],其偏移量为a[0][0]+a[0][1](2个int),需要强转偏移量 -
a[i][j],换算为个数a[i*(j+1)+j]
-
int a[3]
int (*p)[3] = &a;
创建变量p,右看左看
int a[2][3]; int(*p)[3] = &a;
行指针:一个指向一维数组的指针(但用于二维数组)
字符串
- C语言通过使用char数据类型的数组来处理字符串
在字符数组中,每个数组袁术都是char数据类型的变量。通常,我们把char数据类型的指针变量成为字符指针变量。字符指针变量与字符数组有着密切关系,它也被用来处理字符串 - 在程序中初始化字符指针是把内存中字符串的首地址赋予指针,并不是把该字符串复制到指针中。另外,向字符指针付给一个字符串常量时,指针应该指向一个存储空间。
- 在C编程中,当一个字符指针初始化为指向一个字符串常量时,不能对字符指针变量的目标赋值。