3个回答
展开全部
简单的跟你说说吧
如果你理解了,希望你多加点分,呵呵
如果你要申请一个整形变量 int a = 5;
那么a 的值就是5对吧?这个容易理解,那么如果你想知道a所指向的这个5在内存的什么地址
那么你就需要取a的地址,进行 &a 操作。没错 &a 的返回值就是a所在的地址,如果我们想吧这个地址存下来 ,就需要一个指针就存储,即 int* b = &a;
b就是一个指针。
其实你发现没?
int a = 5
int* b = &a
其实 指针也是一个变量,只是我们普通的变量存储的是指,二指针这个特殊的变量存储的内存地址。为了吧这个特殊的变量和普通的变量区别开,我们给取一个新名字:指针
理解了指针的实际意义之后,也就不存在用好不用好的问题了。其实用指针和直接用变量在功能上完全没区别。那为什么要用指针呢?最主要的市效率上的问题。
如不你设计一个函数
struct get(){
.........
}
返回一个结构体对象的函数,你要知道,C++中,这样的返回值都是复制传递的过程,也就是说,你返回这个结构体的时候,程序会复制一个一样的结构体对象在栈里面,然后接受的变量在通过拷贝构造函数,复制一个新的变量。最后程序在析构掉这个临时的。如果结构体很小,没什么问题,如果很大呢?这样一构造,一析构,会非常浪费时间。但是指针就不一样了,管你怎么弄,反正就是4字节,和一个int一样,完全没区别。
希望你能理解我说的这些。
如果你理解了,希望你多加点分,呵呵
如果你要申请一个整形变量 int a = 5;
那么a 的值就是5对吧?这个容易理解,那么如果你想知道a所指向的这个5在内存的什么地址
那么你就需要取a的地址,进行 &a 操作。没错 &a 的返回值就是a所在的地址,如果我们想吧这个地址存下来 ,就需要一个指针就存储,即 int* b = &a;
b就是一个指针。
其实你发现没?
int a = 5
int* b = &a
其实 指针也是一个变量,只是我们普通的变量存储的是指,二指针这个特殊的变量存储的内存地址。为了吧这个特殊的变量和普通的变量区别开,我们给取一个新名字:指针
理解了指针的实际意义之后,也就不存在用好不用好的问题了。其实用指针和直接用变量在功能上完全没区别。那为什么要用指针呢?最主要的市效率上的问题。
如不你设计一个函数
struct get(){
.........
}
返回一个结构体对象的函数,你要知道,C++中,这样的返回值都是复制传递的过程,也就是说,你返回这个结构体的时候,程序会复制一个一样的结构体对象在栈里面,然后接受的变量在通过拷贝构造函数,复制一个新的变量。最后程序在析构掉这个临时的。如果结构体很小,没什么问题,如果很大呢?这样一构造,一析构,会非常浪费时间。但是指针就不一样了,管你怎么弄,反正就是4字节,和一个int一样,完全没区别。
希望你能理解我说的这些。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询