其他分享
首页 > 其他分享> > 【笔记】【C语言】第八章 善于利用指针

【笔记】【C语言】第八章 善于利用指针

作者:互联网

8.1 地址和指针

(1)地址:

  内存区的每一个字节有一个编号,这就是“地址“。如果在程序中定义了一个变量,在编译时,系统会给这个变量分配内存单元。

(2)直接访问:

  按变量地址存取变量值。

    scanf("%d",&x);
    printf("%d",x);
    k=a+b;

(3)间接访问:

  将变量i的地址,存放在另一个变量中。

  在访问的时候,先找到i_pointer,从中取出 i 的地址(2000),然后找到2000,2001的字节,取出 i 的值。

(4)指针:

  一个变量的地址,称为该变量的指针。

  如果有一个变量专门用来存放另一变量的地址(指针),则这个变量称为“指针变量”。

    it = &x ; 

(5)变量的指针

(6)指向变量的指针变量

 

8.2 定义一个指针变量

(1)定义一般形式:

  基类型 *指针变量名

    float a;
    float *it_1 = &a;

(2)* 表示该变量的类型为 指针型变量 。

  指针变量名是it_1.

(3)必须指定基类型。

(4)指针变量只能存放地址,不可以直接给他赋值某个整数

(5)引用:

    printf("%d",*it );

 

指针运算:

(6)&*it

  从右向左进行结合。 *it 就变量a。

  …&*it 则是 &a。

(7)*&it 

  &a是a的地址,*&a则是&a所指向的变量,也就是a

(8)(*it )++ 

  相当于a++

(9)*(it++)

  先做*it运算,得到a。整体相当于a++

 

8.3 数组与指针

(1)数组元素的指针:就是数组元素的地址。

    int a[10];
    int *p = &a[0];

(2)引用一个数组元素:

  下标法:如a[i]

  指针法:如*(a+i)或*(p+i)

(3)用数组名作函数参数,编译时是将arr按指针变量处理的。

  实参——数组名或指针变量

  形参——指针变量或数组名。以下两种写法实际相同。

void f(int arr[],int n)
{ }
void f(int *arr,int n)
{ }

  C语言调用函数时虚实结合的方法,都是采用“值传递”方式,

  当用变量名作为函数参数时传递的是变量的值,当用数组名作为函数参数时,传递的值是地址。

 

(4)多维数组的地址

 

 

 

 

 

 

 

 

 

  

 

 

 

 

 

  

标签:变量,int,数组名,第八章,C语言,++,地址,指针
来源: https://www.cnblogs.com/xwww666666/p/16203878.html