指针
形参和实参在函数间的传递
-
形参和实参都用数组名
-
实参用数组名,形参用指针变量
-
实参形参都用指针变量
-
实参为指针变量,形参为数组名
多维数组和指针
定义
int (*p)[4]
表示一个指向包含四个元素的一维数组的指针
p+i则指向一维数组a[i]。
即类型说明符(指针变量名)[长度] 其中“类型说明符”为所指数组的数据类型。 “”表示其后的变量是指针类型。“长度”表示二维数组分解为多个一维数组时,一维数组的长度,也就是二维数组的列数。
Eg:
有一个二维数组,输入行数和列数,输出该行所有元素和该列所有元素
#include "stdio.h"
int main()
{
void print(int m,int n,int a[]);
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int m,n;
leap: scanf("%d%d",&m,&n);
if(m<3 && n<3)
{
print(m,n,a);
}
else
{
printf("输入错误,请重新输入!");
goto leap;
}
}
void print(int m,int n,int a[])
{
int (*r)[3],(*c)[3];
int i;
r=a;
c=a;
for(i=0;i<3;i++)
{
printf("%2d",*(*(r+m)+i));
}
printf("\n");
for(i=0;i<3;i++)
{
printf("%d\n",*(*(c+i)+n));
}
}
字符串和指针
char a[]="i love China!";
等同于
char *a="i love China!";
需要注意:两者从汇编的角度来说,原理并不相同;