c指针的作用域,CC语言指针和函数作用域的问题

1,CC语言指针和函数作用域的问题你的理解很正确 。c这个变量还没来得及释放就去访问,所以没问题,如果在前面故意拖延一下就会出现异常 。#include #include using namespace std; void test(int **p){ int c = 10; *p = &c; } int main(){ int a = 5; int *p = &a; test(&p); system("pause"); cout << *p << endl; return 0; }什么东西不用静态实现?你上面的程序没有用到静态啊这个时候输出的的确是0啊有什么问题吗【c指针的作用域,CC语言指针和函数作用域的问题】
2,总结一下C的指针用途指针是C语言的精华,要精通c/c++你必须精通它 。没有人比谭浩强的<<c程序设计>>一书讲指针讲的更好的了,精读此书的这一章即可 。要精读完全理解 。下面有些实例; http://zhidao.baidu.com/question/79617065.htmlhttp://zhidao.baidu.com/question/79610454.htmlhttp://wenwen.sogou.com/z/q806040760.htmhttp://zhidao.baidu.com/question/79833017.html比如 int a[10],这个是int型的 。就是在内存中开辟了连续的10个int类型的变量,物理上也是连续的,这个a,就是这10个数组的头 , 也就是它的首地址,所以第一个元素是a[0],这是数组的,如果int *a; 。。这个a是指向int型变量的变量,这个变量中存的是地址,就是a的地址 。a[10],那个数组也一样
3,C语言中的指针域是何意有何用写简单的程序的话不用指针也行了吧. 比如, int a = 2; int* p = &a; *p = 3; 这里a是一个地址(编译后), 为了读写这个地址单元里的东西,可以用p,也可以用一般变量a.对于指针的便利,我现在能想到的,可能是:函数a调用函数b时,把一个内存块的地址传递过去,这样可以避免按值传递时开辟一个栈空间并逐一拷贝内存块里的值的开销(c++里的拷贝构造函数在做这件事),并且a,b函数操作的都是同一个内存块里的东西,如果这就是目的,那么传指针就是很有效率的做法(如果不用指针就可能要用一个全局的变量了).用一个指针(函数指针)存放一系列同类型的函数名(入口地址),方便函数调用.void*类型指针可以存放任何类型指针.让父类类型指针指向任何子类对象可以实现动态绑定.写着写着似乎指针还挺有用,呵呵.我相信指针的使用一定要很小心,否则可能要忍受程序报错而总找不到错在何处的痛苦. 有一些比较极端的例子, 如一个函数返回了一个函数里局部变量的指针,一用就出错; 如声明一个指针没有分配空间就传给别一函数使用; 如多个线程都在使用同一个内存块,你修我改,甚至有人把它删掉了或不小心让指针指向系统用的内存,另一个人还准备往里读写东西---可能要费心思来同步. 如指针指向的内存可能是new/malloc出来的,可能要想办法及时删除并要保证没有别的线程要用...指针的作用范围你说的是链表中存放指针的地方吗?指向下一个结点的位置
4,c 指针 作用以下是一个牛人的见解,我们共同学习一下吧:超市门口有一排排的柜子,要求客户先把自己的包包放进去,还要投币一块,柜子才能上锁,锁匙才能拔出来,锁匙上有个号码牌.当你逛完超市,出来后,怎么去找那个存着你包包的柜子并打开取出来呀?凭号码.比如牌子上写着123,指向123号柜,123号柜里放着你的包.有点类似:指针 int c=100;int *p=&c;上述两句的意思为, 柜子c放着你的包包--"100"这个整数.指针p也是一个柜子,但这个柜子里放的不是你的包包,而是保存你包包的柜子号码牌.也就是说凭着指针p保存的地址,可以找到真正存放数据的地方去.图示p->[c]->100(用->表示被保存):100被保存于变量名C的变量中,而变量C的地址被保存在p中.使用指针里,比如上面,要使用100自加1,可以如下*p++;或者c++;1.指针概念:变量的地址(计算机内存字节的编号)叫做指针 , 存放变量地址的变量叫指针变量,简言之 , 指针是用来存放地址的 。2.指针作用:指向这个变量或数组的首地址,是变量的间接引用方式 。其值如果改变,变量的值或数组元素的值也会跟着改变 。程序对变量的操作实际上是对变量所在的存储空间读取和写入数据 。方便对变量的操作 。3.举例说明:int a=3;/*定义一个整型变量a,并赋初值3*/int *p;/*定义一个指针变量P*/p=&a;/*让p指向a的首地址,也就是a的地址*/程序为a分配一个2个字节的存储单元,假如2个字节的地址分别为(ABCD1和ABCD2,唯一),那么p里面放的值就是ABCD1,不是3 。这时可通过p直接引用a,实际上*p=3 。以后不管a存放在内存中的哪个地方,只用通过调用p就可以引用a 。这时如果令*p=4 , 则最后的a值也为4 。对于数组,指针是指向数组的首地址 。方便参数的传递!还可以是很多数据结构的设计与实现主要是用于内存访问和堆内存操作,用来存放地址5,C语言中指针有什么作用指向变量地址,进而对变量操作指针是c语言中广泛使用的一种数据类型 。运用指针编程是c语言最主要的风格之一 。利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序 。指针极大地丰富了c语言的功能 。学习指针是学习c语言中最重要的一环,能否正确理解和使用指针是我们是否掌握c语言的一个标志 。同时 ,  指针也是c语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试 。只要作到这些,指针也是不难掌握的 。指针的基本概念 在计算机中,所有的数据都是存放在存储器中的 。一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在第二章中已有详细的介绍 。为了正确地访问这些内存单元, 必须为每个内存单元编上号 。根据一个内存单元的编号即可准确地找到该内存单元 。内存单元的编号也叫做地址 。既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针 。内存单元的指针和内存单元的内容是两个不同的概念 。可以用一个通俗的例子来说明它们之间的关系 。我们到银行去存取款时 ,  银行工作人员将根据我们的帐号去找我们的存款单,找到之后在存单上写入存款、取款的金额 。在这里,帐号就是存单的指针,存款数是存单的内容 。对于一个内存单元来说,单元的地址即为指针,其中存放的数据才是该单元的内容 。在c语言中 ,  允许用一个变量来存放指针,这种变量称为指针变量 。因此, 一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针 。图中,设有字符变量c,其内容为“k”(ascii码为十进制数 75) , c占用了011a号单元(地址用十六进数表示) 。设有指针变量p,内容为011a,这种情况我们称为p指向变量c,或说p是指向变量c的指针 。严格地说,一个指针是一个地址,是一个常量 。而一个指针变量却可以被赋予不同的指针值,是变 。但在常把指针变量简称为指针 。为了避免混淆,我们中约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量 。定义指针的目的是为了通过指针去访问内存单元 。既然指针变量的值是一个地址 ,  那么这个地址不仅可以是变量的地址,也可以是其它数据结构的地址 。在一个指针变量中存放一个数组或一个函数的首地址有何意义呢? 因为数组或函数都是连续存放的 。通过访问指针变量取得了数组或函数的首地址, 也就找到了该数组或函数 。这样一来,凡是出现数组,函数的地方都可以用一个指针变量来表示,只要该指针变量中赋予数组或函数的首地址即可 。这样做 ,  将会使程序的概念十分清楚,程序本身也精练,高效 。在c语言中 ,  一种数据类型或数据结构往往都占有一组连续的内存单元 。用“地址”这个概念并不能很好地描述一种数据类型或数据结构,而“指针”虽然实际上也是一个地址 , 但它却是一个数据结构的首地址,它是“指向”一个数据结构的,因而概念更为清楚,表示更为明确 。这也是引入“指针”概念的一个重要原因 。

    推荐阅读