这应该是一个结束篇,同学们如果是还不理解的话,也没有关系,只要你多敲代码,多调试每一段程序,理解指针不成问题。
那么这一篇就说一下C中的主要指针种类吧
可见每一种数据类型都有对应的指针类型。
必须说基本类型, char*, short*, int*, long*, float*, double*
相应的我们构造的数据类型也都有对应的指针
struct mystruct {
char c;
char str[10];
int i;
short si;
float f;
mystruct* myp;
};
如果要执行我们定义的这个变量,我们就mystruct* myp;
如果是定义了这样一个数组的变量,int a[10], 我们就定义一个int* p;
然后令p = a;那么p[0] = 1; 就把数组a中第一个元素赋值为1。
下面一段代码是一些指针的例子,不太恰当,但亦能够反映指针的实质问题。大家不妨自己调试一下看看,毕竟能对指针学习有较大的帮助。
#include <stdio.h>
struct mystruct {
struct mystruct* mys;
}mystruct,* Mystruct;
int main(void) {
void* v; //无类型的指针
int a[10][2]; //二维数组
int* pp = a[1]; //整型指针变量,它指向了整型二维数组的第一个元素,而这个元素是一个整型指针常量
int (*p)[2] = a; //指向整型二维数组的指针变量,a是一个二维数组的首地址,是一个指针常量
a[0][0] = 0;
a[0][1] = 2;
a[1][0] = 9;
a[1][1] = 200;
printf("%d\n", pp[0]);
printf("%d\n", p[0][1]);
p = &a[1];
printf("%d\n", p[0][1]);
int* ppp[10]; //整型指针组成的数组
int* pppp[2][2]; //整型指针组成的二维数组
typedef void (*ppppp)(); //定义了一个类型,是一个空返回值,空参数函数的指针类型
ppppp myp[10]; //这个数组含有10个上述类型的指针
}