> 文章列表 > C程序设计语言——八、指针(2)指针和一维数组

C程序设计语言——八、指针(2)指针和一维数组

C程序设计语言——八、指针(2)指针和一维数组

目录

一、指向一维数组指针

1、数组的指针

2、指向数组的指针变量

3、数组元素的地址

4、表示数组元素

5、地址:p++(下移一个元素)

6、数值:*(p++)

7、指向数组的指针运算规则

8、等价关系

拜拜~


一、指向一维数组的指针

1、数组的指针

  1. 数组名是数组的首地址,是一个指针常量

2、指向数组的指针变量

  1. int a[10],*p;   p=a;
  2.  C规定:数组名a是数组的首地址,a+1代表下一个元素地址即 &a[1],a+i代表,&a[i] 

3、数组元素的地址

  1. &a[i]、a+i、p+i
  2. p++

4、表示数组元素

  1. a[i]、*(a+i)、*(p+i)、p[i]
  2. *p++

5、地址:p++(下移一个元素)

6、数值:*(p++)

7、指向数组的指针运算规则

  1. p+n:向后移n个元素(不是n个字节);

  2. p-n:向前移动n个元素;

  3. int *p=&a[1],*q=&a[5];q-p就是4,p-q无意义。必须指向相同数组的指针减法;

  4. 关系运算:p<q,p是低地址,q是高地址

  5. 指针可以与0比较:#define NULL 0        int *p = NULL;

  6. 注意:

    1. 数组名是地址常量,切不可对其赋值,也不可做自增、自减运算,但是可以进行a+n;

8、等价关系

(1) 含义 (2) 含义
*p++ 先取内容,p再++ *(p++)  先取内容,p再++
(*p)++  先取内容,内容再++ a++(int a,*p=&a) 内容++
*(p--) 先取内容,p再-- a[i--] 先取内容,下标再--
*(++p) p先下移,再取内容 a[++i] 下标先++,再取内容
*(--p) p先上移,再取内容 a[--i] 下标先--,再取内容

二、《编写函数swap(),将数组逆序输出》

//编写函数swap(),将数组逆序输出
#include<stdio.h>
void swap(int *arr,int n)
{int t,i;for(i=0;i<n/2;i++){t=arr[i];arr[i]=arr[n-i-1];arr[n-i-1]=t;}
}
void main()
{void swap(int *arr,int n);int a[10]={1,3,5,7,9,11,13,15,17,19};int i;for(i=0;i<10;i++)printf("%d",a[i]);printf("\\n");swap(a,10);for(i=0;i<10;i++)printf("%d",a[i]);printf("\\n");
}

拜拜~

情感知识