登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[学习笔记] 指针与数组的情缘

[复制链接]
发表于 2017-1-19 23:03:48 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 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)
{
.........
}





指针练习.txt

736 Bytes, 下载次数: 546

c程序

评分

参与人数 1铜板 +33 收起 理由
alpha + 33 鼓励支持!

查看全部评分

...
发表于 2017-1-20 01:58:57 | 显示全部楼层

尽量避免

该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表