c 指针的应用。
简单的跟你说说吧 如果你理解了,希望你多加点分,呵呵 如果你要申请一个整形变量 int a = 5; 那么a 的值就是5对吧?这个容易理解,那么如果你想知道a所指向的这个5在内存的什么地址 那么你就需要取a的地址,进行 &a 操作。 没错 &a 的返回值就是a所在的地址,如果我们想吧这个地址存下来 ,就需要一个指针就存储,即 int* b = &a; b就是一个指针。 其实你发现没? int a = 5 int* b = &a 其实 指针也是一个变量,只是我们普通的变量存储的是指,二指针这个特殊的变量存储的内存地址。 为了吧这个特殊的变量和普通的变量区别开,我们给取一个新名字:指针 ...全部
简单的跟你说说吧 如果你理解了,希望你多加点分,呵呵 如果你要申请一个整形变量 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一样,完全没区别。 希望你能理解我说的这些。
收起