c语言数据指针程序,C语言-指针、指针作函数参数

一、指针

&(取地址运算符):单目运算符,返回一个变量的地址

*(指针运算符):单目运算符,返回的是一个地址里面的变量的数据。

&和*具有相同的优先级,自右向左结合。

*只有在声明的是时候表示是指针,其他任何情况单独出现*都表示指针运算符。

二、什么是指针变量?

1、指针变量的声明:

数据类型 *变量名;int

*p;

2、指针变量的赋值:

A、在声明指针的时候赋值:int

*p=&a;

B、先声明,再赋值。

Int *p;  p=&a;

C、不允许把一个数赋值给指针变量:int

*p;  p=50000;(错误的)

3、指针变量的引用:

*变量名;Int *p;

p=&a;

*p=a;

三、指针做函数参数

#include"stdio.h"

voidSwap(int*pa1,

intpb1);

intmain()

{

inta,

b;

int*pa,*pb;

建议:

遇见指针:1、这个指针的指向类型?2、这个指针指向哪里?3、指针自己的类型?

a = 6;

b = 3;

pa = &a;

pb = &b;

Swap(pa, pb);

printf("a=%d\nb=%d\n",

a, b);

}

voidSwap(int*pa1,

int*pb1)

{

inttemp;

temp = *pa1;

*pa1=

*pb1;

*pb1=

temp;

}

四、总结

1.首地址:

&a[0][0]  a[0]  &a[0]

a

&a

2.行地址:

1、第0行的地址就是首地址

2、第1行&a[1][0]

a[1]&a[1]

a+1

3、第2行&a[2][0]

a[2]&a[2]

a+2

4、第i行&a[i][0]

a[i]&a[i]

a+i

蓝色的加法就加一维数组的字节数 橙色的加法加数据类型的字节数

3.通过行地址去找到n行m列的元素。

关键是要搞清楚 作为一维数组做判断 还是以整体的二维数组来进行判断

n行m列的元素 (&a[i][j])

(1) *(*(p+i)+j) (作为一维数组做判断)

例1:#include "stdio.h"

void Input(int (*p)[10],int

m ,int n);

void Output(int (*p)[10],int

m ,int n);

int

main()

{

int

a[3][10];

Input(a,3,10);

Output(a,3,10);

return

0;

}

void Input(int (*p)[10],int m ,int n)

{

int i,j;

for(i=0;i

{

for(j=0;j

{

scanf("%d",*(p+i)+j);

}

}

}

void Output(int (*p)[10],int m ,int n)

{

int i,j;

for(i=0;i

{

for(j=0;j

{

printf("%d",*(*(p+i)+j));

}

printf("\n");

}

}

(2) &p[i*n+j] (矩阵列数为n)

例2:

#include

void Input(int *p,int m ,int n);

void Output(int *p,int m ,int n);

int main()

{

int a[3][4];

Input(*a,3,4);

Output(*a,3,4);

return 0;

}

void Input(int *p,int m ,int n)

{

int i,j;

for(i=0;i

{

for(j=0;j

{

scanf("%d",&p[i*n+j]);

}

}

}

void Output(int *p,int m ,int n)

{

int i,j;

for(i=0;i

{

for(j=0;j

{

printf("%d",p[i*n+j]);

}

printf("\n");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值