首页 > 代码库 > c语言指针
c语言指针
看了《c和指针》 ,读书笔记如下。
关于指针
1、
int a=12;
int *b=&a;
int **c=&b;
-----------------------
期中第二句相当于 int *b; b=&a;
期中第三句相当于 c=&b;*c就是b,也就是&a;**c就是*b,就是a,也就是12
2、
char ch = ‘a‘;
char *cp=&ch;
---------------------------------
一个赋值表达式:
X = Y;
在这个表达式里,符号X的含义是X所代表的地址,这被称为左值,左值在编译时可知,左值表示存储结果的地方;
在这个表达式里,符号Y的含义是Y所代表的地址的内容,这被称为右值,右值在运行时才可知,如无特别说明,右值表示“Y的内容”。
在《C专家编程(中文版)》中第4章,对左值和右值的基本描述,其余的拓展描述你可以自己看。
&ch 右值:ch的地址。左值:非法。为什么非法,因为当表达式&ch求值时,它的结果应该储存在计算机的某个地方,但你无法知道它位于何处,所以不是合法左值。
cp 右值是cp的值。左值:cp所处的内存位置。
&cp 右值:指针变量的地址。左值:非法
*cp+1 右值:就是cp指向的ch内容加1.左值:非法
*(cp+1)右值:cp指向的ch的下一个单元内容。左值:cp指向的ch的下一个单元内容的地址
++cp 右值:cp指向的ch的下一个单元内容的一份拷贝。左值:非法。
cp++ 右值:cp指向ch的地址。然后cp再加一。左值:非法。
3、
int *a;
*a=12;
上述是非法的。未初始化,*a指向了哪里呢,覆盖了以前的内容,很容易覆盖一些重要的数据。这句话的意思就是把12存储在a指向内存的位置,但具体哪个位置,不得而知。
c语言指针
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。