关于指针的一个不明白的问题。

作者&投稿:机岚 (若有异议请与网页底部的电邮联系)
指针就是一个普通的变量,只不过它的值是一个内存的地址。
指针是32位的,正如你定义了一个long类型的变量。
delete掉的仅仅是指针指向的那块地址的内存。

指针变量是不会被释放掉的,变量被释放,跟内存被释放是不一样
内存被释放后,就无法使用,无法对它进行读写操作了,否则会出错
变量被释放后,也无法对它进行操作了,比如:
main()
{
int i=1;//作用于main函数内
{
int j;//仅仅作用于离它最近的这对大括号内
j=0;//这里可以访问j
}
//j=2;//这里不可以访问,因为j被释放了
}

变量的释放,都是由系统控制的,程序员不需要去放它;
而内存的释放是由程序员控制的

另外,要注意的是:
指针变量指向的内存释放后,最好把指针变量赋值为0
之后再使用它之前,先判断它释放为0,不为0再使用

指针这个变量在你这个函数结束时或者程序结束时会自动释放掉,但是它所指向的内存会在你用delete时释放掉,delete释放的是你申请的内存,不时这个变量

指针就是一个普通的变量,只不过它的值是指向一个内存地址。
指针是32位的,正如你定义了一个int类型的变量。
delete掉的仅仅是指针指向的地址。

关于指针的问题,一直搞不明白。。。~

反对楼上说法。
typedef struct Node
{
。。。
}Node, *pNode;
使用typedef定义了一个数据类型,该类型是一个结构体,类型名字叫Node,
同时定义了一个指针,该指针是指向Node数据类型的指针。
你可以把Node理解为int,float之类的通用类型,而pNode理解为int *,float *;
如果你理解上边的话,
那么pNode &root,注意pNode是一个指针类型,而root是一个结构体,&root就是就是该结构体的地址,而并非是引用。

估计是为了和以前的汇编兼容,
以前汇编的时候一个函数所接收的参数只能是一个32位的数,因此你要传一个对象给这个函数,就只能把它的地址传进来。
而且函数的返回值也只能是一个32位的数,因此往往也只能返回一个对象或结构体的指针。
你见到的这样的函数一般应该都是Win32 API里面的一些函数。

如果要返回的内容不是一个eax所能容纳的,Win32 API采用的方法一般是返回一个指针,或者在调用参数中提供一个缓冲区地址,干脆把数据直接返回到缓冲区中去。

学习c语言过程遇到一个难缠的指针问题,求解
答:很简单啊。数组名在等号右边时,类型是int *,表示指向数组首元素的指针。第8行等号右边arr的类型是int *,强转为char *,此时仍然指向数组中的元素1, 加上 i * sizeof(int) = 0,也就是让elemAddr指向元素1;第9行就通过解引用指针,取出元素1的值1;然后进行下一次循环,i的值是1,此时...

C++指针一个问题
答://a等价于二维数组的首地址也等于&a[0],a[0]是二维数组的第一个字符串,char (*a)[10]标明指针指向一个长度为10的char型数组 char *p=a[0],i;//p是指向二维数组第一个字符串的指针,p是指向字符串第一个字符,p+1只移动一个字节 //在数值上a==&a[0]==p,但意义不一样 for(i=...

有关C++指针和数组的一个小问题
答:国内的教材和老师为了让学生一下子记住数组的使用,不求理解,而且容易讲,一般都会说数组名是个常量指针。如果看一些外国的教程的话,如c++prime之类,都会强调数组是一种类型,不同于指针。这样为什么sizeof能表示整个数组的长度就没问题了吧,因为数组本来就是一种具有自己独立属性的类型嘛。

一个关于C语言指针的问题~~~
答:average(*score,12);/*这怎么也带上*号了?*/ (带*号才对,它就代表一个变量了,不带星号就成了指针数据类型,就进行不了平均值运算)search(score,2);/*这为什么不带了?*/ (这里就是代表地址了)} void average(float *p,int n){ float�*p_end;float sum=0,...

有关C++函数调用问题。不明白里面的指针和&的用法。
答:而函数指针就是保存的函数的入口地址所以你使用发fp(a,b)调用就相当于函数名调用你使用(*fp)(a,b)调用相当于把a,b作为参数,传递到fp指向的地址所以效果是一样的其实函数调用的时候使用函数名 f_i(a,b) 和 (*f_i)(a,b) 也能得到正确的结果道理也是一样的最后有一个问题就是不知道是否和...

请教有关c++指针问题?
答:但这个问题怎么解决呢?答案是动态分配技术。注意这在C和C++中是不同的。由于大多数程序员都是用C++,所以我用到的是C++中常用的称谓。动态分配 动态分配是指针的关键技术。它是用来在不必定义变量的情况下分配内存和让指针去指向它们。尽管这么说可能会让你迷惑,其实它真的很简单。下面的代码就是一个为一个整型数...

学习指针遇到问题了
答:而不可写成:char *q;q="oringe";float *p2=&a 它和我上面所说的是一样的,依然可以写成这样:float *p2;//* 定义一个浮点型指针变量p *// p2=&a;//*把a的地址赋给p2,且你应该知道符号 & 是取地址的意思*// 这样,你应该知道float *p2=&a和p2=&a有什么区别,一个是定义变量时...

关于C++指针,很基本的问题
答:不要小看一个一个简单的例子, 他们是你通往成功的道路. 当你基本能够掌握了上一本书中例子后, 你就要自己找一些例子程序去看. 开始可能是看不懂, 但是只要努力就没有什么问题. 当你看过几个较大的例子之后, 你会茅塞顿开, ( 大量阅读例子程序是学习C/C++的捷径 ). 你会发现, 你的水平有了显著的提高....

一个用指针变量指向数组元素的问题
答:1.数组实质上是指向一段连续内存区域起始地址的指针,所以int[10]可以复制给int*,这样只会造成数组退化(编译时长度信息丢失)。2.p = a永远不会错,因为你只是将a的值赋给了p所指向的内存区域,这句在编译时永不会报错。3.(*p + 10)和(*(p + 10))你要区分清楚,一个是将p指向的值和10...

C语言指针问题求高手急啊!!!
答:你好!楼主你的答案的确是错了,我用WIN TC编译过 输出的是1和6 现在解释一下吧:main(){ char s[]="162",*p;/*建立一个字符数组s[],因为一个CHAR只可以放一个字符,所以s[0]=1,s[1]=6,s[2]=2,当然下标是否从0开始依照编译系统的不同而不同;后面*p是定义了一个指针变量*/ p=...