700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言指针详解----指针声明定义赋值

C语言指针详解----指针声明定义赋值

时间:2021-09-15 16:37:08

相关推荐

C语言指针详解----指针声明定义赋值

C语言的指针是让新手很头疼的事情,但是由于其太过于灵活,以至于可以很好得的解决一些复杂的问题,因此不得不掌握。我最近正在学习指针相关的内容,因此在这里做一个小的总结。本篇是不涉及到函数以及结构体等复杂的使用方法,仅仅讨论一下指针的基本使用方法。

首先我们区分 * 和 & ,这两个运算符, & 我们在scanf函数中经常使用。为了方便理解我们看下面这行代码:

int *p =a;

定义了一个指向a的整型指针,那么有p=&a ; *p =a;

即指针变量的值是地址(&a),*可以理解为取地址 (*p 可以看成 *(&a)取出&a这个地址中的值)。

下面我们看一个复杂点的代码:

int n =0,*p = &n,**q = &p;

这里出现了二级指针,也就是所谓的“指向指针的指针”。 q是指向 int* 型数据的指针变量,首先 p = &n,这行代码很好理解,后面的**q = &p可以拆开来看,首先声明了一个int* 型数据的指针变量 int **q;再给指针型变量赋值 即(*q) = &p;那么问题来了,对于指针的赋值应该如何理解呢?就以上面这行定义为例有下面四个赋值语句

p = 1; *q = 2;q = p;*p = 5;

我们先看p = 1;这个赋值语句,根据我们上面所解释的p =&a;我们知道指针变量的值应该是地址,而p = 1;直接将整数赋给了指针变量,编译时会报错

cannot convert from 'const int' to 'int *'

我们再看*q = 2;根据上面的分析我们知道(*q) = &p;同第一句一样的问题编译时会报错cannot convert from 'const int' to 'int *'

再来看第三句q = p;这句很明显的错了,p是 int* 型数据 而 q是int**型数据,编译时会报错cannot convert from 'int ** ' to 'int *'

我们根据上述p=&a ; *p =a;可以明显的看到*p = 5;这是一个正确的赋值语句。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。