对指针和指针变量的清晰理解,及相关利用指针对数组进行调用的4种方法(C语言基础)

指针
首先我们需要搞清楚什么是指针,什么是指针变量,举一个例子:

 int  *i_pointer ;

这行代码的目的是,用 *号定义一个整型指针变量,其中指针变量为i_pointer ,用于存放地址,该地址就是我们常说的指针

 i_pointer = &i;

其中&读作and,作用是取地址。这行代码的目的就是取i的地址,并赋值给i_pointer。

*:叫做取值操作符
&:叫做取地址操作符

 int *i_pointer;

这里的 *号不是取值操作符,这里只是定义声明它是个指针,用于存放地址。

这里再次强调一下,当我们知道了一个变量的地址,就可以通过这个地址来访问这个变量,因此,又把变量的地址称为该变量的指针

这里区分一下指针变量的含义,C语言中可以定义一类特殊的变量,这些变量专门用来存放变量的地址,称为指针变量

如果执行了语句pointer=&a;
那么 &*pointer 的含义是什么呢?
其中&和 *的优先级相同,但按照自右向左结合的规则,所以先进行 *pointer的运算,它就是变量a,然后再执行&运算,得到&a,即变量a的地址

按照这样的规则,在做的各位帅哥靓女还可以再思考一下*&a的含义是什么?

关于调用数组实参的4种方法:

①实参和形参都用数组名

void main()
{   int a[10];
    .......
    f(a,10);
    ....}

void  f(int x[]  ,  int n)
{...}

②实参用数组名,形参用指针变量

void main()
{ int  a[10];
...
f(a,10)...
}

void f(int*a , int n)
{  ...}

③实参形参都用指针变量

void main()
{
    int a[10] , *p=a;
    ...
    f(p,10);
    ...
}


void  f(int  *x , int n)
{...}

④实参为指针变量,形参为数组名

void main()
{
  int a[10] , *p =a;
  ...
  f(p ,10);
  ....
}

void  f(int  x[] , int n)
{....}

在C语言调用函数中,当用数组名作为函数参数时,由于数组名代表的是数组首元素地址,因此传递的值是地址,所以要求形参为指针变量。

你可能感兴趣的:(C语言程序设计,基础入门,笔记)