指针

一、指针的类型

    (1)int*ptr  指针的类型是int*,它可以指向一个int类型
  (2)char*ptr  指针的类型是char* 可以指向一个char类型

二、指针的运算

1. +,-,*,\,%,++,--都能做

 

#include<stdio.h>
int main()
{
    int a=10,b=20;
    int *pa=&a, *pb=&b;
    printf("%d\n", *pa+*pb);
    printf("%d\n", *pa-*pb);
    printf("%d\n", *pa**pb);
    printf("%d\n", *pa/(*pb));
    printf("%d\n", ++*pa);
    printf("%d\n", --*pb);
 } 

 

2.  指针指向数组时做的一些运算

在单纯使用数组时,不能对整个数组做运算,但是使用指针数组后,就多了些不同之处

#include<stdio.h>
int main()
{
    int array[20]={0};
    int *p=array;
    int i;
    for(i=0;i<20;i++)
    {
        ++*p;\\对数组中每个元素做+1的运算 
           p++;\\ 指针指向数组中下一个元素 
       }
    for(i=0;i<20;i++)
    printf("%d", array[i]);
 } 

三、指针与数组

1.指针与一维数组

例如:

#include<stdio.h>
int main()
{
    int a[10]={1,2,3,4,5,6,7,8,9,10};
    int *p;
    p=a;//相当于 p=&a[0],由此可知数组名代表的是数组首元素的地址    
    for(int i=0;i<10;i++)
        printf("%d\n", p+i);//p+i相当a+i,即&a[i]
    printf("\n");
    for(int i=0;i<10;i++)
        printf("%d\n", *(p+i));//(*p+i)相当于a[i] 
 } 

 2.指针与二维数组

int a[n][m]

二维数组就是包含n个元素,a[0],a[1],a[2],每个元素都是一个包含四个整型元素的数组

使用指针遍历二维数组

 

 

(1)与一位数组不同的是,数组名a表示&a[0], a[0]才表示二维数组的第一个元素a[0][0]的地址,即&a[0][0]

(2)a+i 等价于*(a+i), a[i];   *(a+i)+j 等价于 a[i]+j

(3)*(*(a+i)+j)或者*(a[i]+j)相当于a[i][j]

 

总结:进入指针的学习后,内容变得相对复杂,难度也有所上升,要理清指针的运用方式

posted @ 2021-11-21 13:37  高宇煌  阅读(89)  评论(0编辑  收藏  举报