零散知识点:
- 指针类型:每个变量占用的首单元地址称为这个变量的存储地址。
- “&”为“取地址运算符”。格式:& 变量名。功能:返回指定变量的存储地址。
- “*”为“取内容运算”。格式:* 变量名。功能:返回指针型变量所指变量的内容。
- 指针型变量的定义:<数据类型> * <指针型变量名>。
- int *intptr; // intptr是一个指向int类型的指针型变量
- * intptr=a;
- intptr=&a // a的地址赋值给指针型变量intptr
- char *p[4] //p是一个含有4个元素的一维数组,每个元素是指向字符的指针
- 指针型变量的引用
- 输出指针所指变量部分的内容:printf("%d, %c",*p,*c);
- 通过键盘输入两个指针所指的变量部分进行赋值:scanf("%d%c", c, p);
- 指针与一维数组(int iarray[10])
- 数组名是一个含有数组第一个元素地址的常量指针。iarray=& iarray[0]=可以得到数组iarray的存储地址。
- iarray+1=& iarray[1]=可以得到数组iarray[1]的存储地址。
- 假设有指针型变量的定义int *ptr,利用赋值语句ptr=iarray将数组的存储地址赋给这个指针型变量,可以得到:*ptr=iarray[0],*(ptr+1)=iarray[1],*(ptr+9)=iarray[9]。
- 指针与二维数组(int a[3][2])
- a[0]是含有2个int类型元素的一维数组。
- a[0]+1=&a[0][1]; a[0]=&a[0][0]; a[1]=&a[1][0]; a[2]=&a[2][0];
![](https://images2017.cnblogs.com/blog/1087130/201801/1087130-20180129105704406-1597684171.png)
- 利用指针对数组元素进行操作
- 假设有如下定义:int iarray[20]; int *ptr;,则ptr是一个所指类型为int的指针型变量,当利用赋值语句ptr=iarray;将一维数组iarray的地址赋给ptr时,ptr+i将指向数组下标为i的元素。
- 将iarray的内容显示输出的方法如下:
- for (ptr=iarray,i=0;i<20;i++) printf("%d",*(ptr+i));
- for (ptr=iarray;ptr<array+20;ptr++) printf("%d",*ptr);
- 指针与数组实例:从键盘输入一个文本行,统计其中包含的空格和非空格字符的数量
1 #include<stdio.h>
2 #pragma warning(disable:4996)
3 #define NUM 80
4
5 main()
6 {
7 char textline[NUM];
8 char *s;
9 int charnum = 0, spacenum = 0;
10 printf("enter a string:");
11 gets(textline);
12 for (s = textline; *s != '