大家好,欢迎来到IT知识分享网。
指针在C语言基础中非常重要,对后面学习C++或数据结构算法都有很大作用。
这是前面一部分哦!如果对大家有帮助的话,能否送个赞鼓励一下哇!!!
基础知识笔记一:
eg.以下写法都是错误的:
int x,y,*p1,*p2;
double *d;
(1)p1=100;
(2)p2=y;
(3)d=&x;
(4)d=p1;
6.“&”和“*”互为逆运算 x等价于*&x
基础知识笔记二:
下面用代码来帮助大家进一步理解指针的使用:
1.演示指针变量:
#include <stdio.h> int main(){ int x=88; int *p=&x; printf("变量x的值(x):%d\n",x); printf("变量x的内存地址(&x):%#p\n",&x); printf("指针变量p的值(p):%#p\n",p); printf("指针变量p指向的内存空间中所存放的值(*p):%d\n",*p); printf("变量x的值(*&x):%d\n",*&x); return 0; }
不同的计算机运行上面的程序内存地址可能不同。
刚开始学习指针的同学可能会感到混乱,根据上面的输出结果,可以清晰地比较x,&x,p,*p,*&x的含义,加深理解。
指向指针的指针:指针可以指向基本数据类型的变量,也可以指向指针变量。当指针指向指针变量时,称为指向指针的指针,也称为多级指针。(上面笔记二第一点有提到相关要点)
2.演示指向指针的指针:
/*eg.指向指针的指针*/ #include <stdio.h> int main(){ int x=88; int *p=&x; int pp=&p; printf("变量x的值(x):%d\n",x); printf("变量x的内存地址(&x):%#p\n",&x); printf("指针变量p的值(p):%#p\n",p); printf("指针变量p指向的内存空间中所存放的值(*p):%d\n",p); printf("变量指针p的内存地址(&p):%#p\n",&p); printf("指针变量pp的值(pp):%#p\n",*pp); printf("指针变量pp指向的储存单元中所存放的值(*pp):%#p\n",*pp); printf("变量x的值(pp):%d\n",pp); return 0; } // %#p说明:p表示按十六进制格式输出指针(内存地址),#表示带有前缀OX
在不同的计算机、操作系统和编译器上运行上面的程序,输出的内存地址可能不同。
程序第4行声明了整型变量x,其初始值为88。
程序第5行声明了指针变量p,其初始值为变量x的内存地址,这样指针变量p指向变量x。
程序第10行输出指针变量p指向的内存空间所存放的值,也就是变量x中存放的值、所以*p与x的值是相同的。
程序第13行输出指针变量pp指向的内存空间所存放的值,也就是指针变量p中存放的值,所以*pp与p的值是相同的。
程序第14行输出变量x中存放的值,所以p与x的值是相同的。
3.演示指针赋值和值赋值:
/*eg.演示指针赋值和值赋值*/ #include <stdio.h> int main(){ int x,y; int *p1,*p2; x=-42; y=163; p1=&x; p2=&y; printf("x=%d,*p1=%d\n",x,*p1); printf("y=%d,*p2=%d\n",y,*p2); *p1=*p2; printf("x=%d,*p1=%d\n",x,*p1); printf("y=%d,*p2=%d\n",y,*p2); *p2=126; p1=p2; printf("x=%d,*p1=%d\n",x,*p1); printf("y=%d,*p2=%d\n",y,*p2); return 0; }
理解好上面的指针赋值 ,对指针的理解会有很大帮助。
程序第4行声明了整型变量x和y。
程序第11行输出变量y的值和指针p2所指向的变量的值,它们也应该是一样的。
指针笔记(下)加快更新……
希望对大家有帮助!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/111444.html


