求C++指针的深刻理解最好能举个例子 谢谢了

如题所述

我经常用箭头和盒子来说明指针的概念。
盒子里可以放各种变量,可以是基本变量,例如int,char;盒子中也可以放复合变量,例如放了一个结构体;
箭头就是指针了。在没有对指针赋值之前,这个指针是不能用的,因为它不知道指向了哪里。
要使用指针有两种方法
1)让箭头指向某个盒子,也就是取某个变量的地址,然后赋予指针
int a = 3;
int *p;
p = &a; // 这是设置设置箭头的方向
*p = 5; // 这是设置箭头所指的盒子里的内容
2)凭空生出个盒子,然后让箭头指向这个盒子,也就是动态分配;
int *p;
p = (int*)malloc(sizeof(int)); // 造一个可以放下int的盒子
*p = 5;

指针的基本使用就是这样了
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-30
int a = 10;
int *p = &a;
printf("%d",a);
printf("%d",*p);
a = 9;
printf("%d",*p);
---------------------------------------------------------------------------
struct st
{
int a;

double b;

}

st *pst = new st();
pst->a = 10;
pst->b = 2.2;
delete pst;
第2个回答  2012-09-01
数据类型是一种规定了存储大小与存储规则的数据存储方式.
例如C++中的int数据类型,大小为4byte,存储类规则为整数,char数据类型,大小为1byte,存储规则为字符.

指针就是一种数据类型,大小为4byte,存储规则为地址(指针所指向的变量的地址).
&为引用操作符,将此操作置于变量名前时可以取得此变量的地址,例如int a=5;,则&a表示整数5在内存中地址.*为反引用操作符,将此操作符置于指针前时可以取得该指针所指向变量的值.例如int *a; int b=5; a=&b;,则*a的值为5,而a的值为整数5在内存中的地址.
另外还有指向指针的指针,指向对象的指针,原理均与此相同.
例如int a=5; int *b; int* *c; b=&a; c=&b;,则b的值为变量a在内存中的地址,c的值为指针b在内存中的地址.
class example
{
private:
int a=5;
int b=6;
public:
int add()
{
return a+b;
}
};
example* pClass;
example a;
pClass=&a;
int c=pClass->add();
则c=11,其中操作符->相当于由对象引用函数时的操作符..

求C++指针的深刻理解最好能举个例子 谢谢了
1)让箭头指向某个盒子,也就是取某个变量的地址,然后赋予指针 int a = 3;int *p;p = &a; \/\/ 这是设置设置箭头的方向 p = 5; \/\/ 这是设置箭头所指的盒子里的内容 2)凭空生出个盒子,然后让箭头指向这个盒子,也就是动态分配;int *p;p = (int*)malloc(sizeof(int)); ...

我是个c++初学者,感觉学到指针这比较难,尤其是2级指针,哪为大虾能给...
以后,我们说一个指针的值是XX,就相当于说该指针指向了以XX为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。 指针所指向的内存区和指针所指向的类型是两个完全不同的概念。在例一中,指针所指向的类型已经有了,但由于指针还未初始化,所以它所指向的内存...

一个关于c++指针变量的疑惑?
i_pointer是一个指针变量,则*i_pointer表示i_pointer指向的变量。换句话说,*i_pointer所指向的空间中存储的是一个数值,也就是题目中说的3。举个例子,int a=5;在这里a是一个变量,printf("%d",a);输出的就是a的值。a=12;也是将12存放到变量a中。所以,有时变量与变量的值是连在一起的。

关于C C++ 的指针和函数运用的区别比较 高手请赐教!
首先,要说明的是:数组名,是一个指针,它指向存放数组元素的一块内存区域,那么数组元素是怎么被引用的呢,我举个例子。如a[3],编译系统会首先找到这个数组的首地址,即a,然后根据〔〕中的值确定地址偏移量,即3,由此便确定了,要引用的元素是地址a+3所指向的单元的内容。你知道〔〕叫什么吗?

c++的函数指针是怎么用的呀?
7) 函数指针只能指向函数的入口处,而不可能指向函数中间的某一条指令。不能用*(p+1)来表示函数的下一条指令。8) 函数指针变量常用的用途之一是把指针作为参数传递到其他函数 实例:include <iostream> using namespace std; #include <conio.h> int max(int x, int y); \/\/求最大数 ...

在C++种,关于指针的这两种表示有什么区别:double * a和double ** a...
1、double * a;意思是a指向一个double变量的地址。2、double **a;意思是a指向一个地址,而这个地址指向一个double变量。在计算机科学中,指针(Pointer)为编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。

c++指针怎么知道指向内存的大小
Type* Tmp = reinterpret_cast<Type*>(ptr);你可以试试,没有任何人知道内存有多大,你只能知道你在用什么类型去使用这个内存,而那个类型的大小你是知道的(编译器会帮你计算的).

C++中指针与引用的区别
指针与引用的区别有:引用的好处在于:引用实际上是指针常量的语法糖,为程序员带来了许多便利。在编写程序时,引用可以像变量自身一样使用,访问引用与访问对象从语法上看几乎相同,但实际上却进行了指针的高效操作。举个例子,使用者无需关心接收者的形式。摘自侯捷C++面向对象高级开发第五集中讲解传入\/...

指针是什么?
先声明几个指针放着做例子:例一:(1)int *ptr;(2)char *ptr;(3)int **ptr;(4)int (*ptr)[3];(5)int *(*ptr)[4];如果看不懂后几个例子的话,请参阅我前段时间贴出的文章<<如何理解c和c ++的复杂类型声明>>。1。 指针的类型。从语法的角度看,你只要把指针声明语句里的指针名字...

关于c++中对int *pa[5]的理解
这个其实要看变量优先和谁结合。举个例子:例如 int * pa[5] 和int (*pa)[5]int * pa[5] 默认[]要先结合,所以先可以得到pa[5],即pa是一个大小为5的数组 然后表达式剩下int * , 即表示数组中存储的是int型的指针。综合就是pa是个指针数组,数组大小为5 而对于int (*pa)[5],括号...

相似回答