学习笔记
学习科目: |
C语言 |
学习安排: |
视频、vc++上机练习 |
开始时间: |
2017-01-16 |
结束时间: |
2017-01-19 |
初次接触指针,看视频看了两天一脸茫然,这是第三天,开始着手整理一些简单的用法,如有错误欢迎批评指教,另附一c程序文件供参阅。
一、二维数组取地址的表示形式:
以a[3][4]这一二维数组为例
表示形式 | 含义 | a | 二维数组名,指向一维数组a[0],即0行首地址 | a[0],*(a+0),
*a
| 0行0列元素地址 | a+1,&a[1]
| 1行首地址 | a[1],*(a+1)
|
1行0列元素a[1][0]的地址
| a[1]+2,*(a+1)+2,
&a[1][2]
| 1行2列元素a[1][2]的地址
| *(a[1]+2),*(*(a+1)+2),
a[1][2]
|
1行2列元素a[1][2]的值 |
总结(1):*(a+i)+j是二维数组i行j列的元素的地址
*(*(a+i)+j)则是i行j列元素的值
(2):二维数组指针变量说明的一般形式为:
类型说明符 (*指针变量名)【长度名】
其中 “类型说明符” 为所指数组的数据类型;
“*” 表示其后的变量是指针类型;
“长度” 表示二维数组分解为多个一维数组时,一维数组的长度,也就是二维数组的列数。
二、如果有一个是参数组,想在函数中改变此数组中的元素的值,
实参与形参的对应关系有以下四种:
(1)形参和实参都用数组名:
void f();
void main()
{
int a[10];
f ( a, 10 );
}
void f (int x[], int n)
{
.........
}
(2)实参用数组名,形参用指针:
void f();
void main()
{
int a[10];
f ( a, 10 );
}
void f (int *a, int n)
{
.........
}
(3)形参和实参都用指针变量:
void main()
{
void f;
int a[10], *p;
p=a;
f ( p, 10 );
}
void f (int *x, int n)
{
.........
}
(4)实参为指针变量,形参为数组名:
void main()
{
void f;
int a[10], *p;
p=a;
f ( p, 10 );
}
void f (int x[], int n)
{
.........
}
|
评分
-
查看全部评分
|