关于指针,我对初学C语言的同窗们真的有话要说!5

这应该是一个结束篇,同学们如果是还不理解的话,也没有关系,只要你多敲代码,多调试每一段程序,理解指针不成问题。

那么这一篇就说一下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个上述类型的指针
}
发布了159 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_39410618/article/details/102575085
今日推荐