指针是一种间接类型,在电脑中什么意思呢,在开辟的一块指针类型当中,存放的是另一块内存的地址,有了地址以后,就可以通过这种指向的方式来访问并且修改。
其实指针就和目录一样,在书中目录也是要占据地方的,只不过占据的比较少。而且根据目录可以正确的找到,指向的具体位置。
#includeusing namespace std; int main() { int x=3; char s='a'; int* p=&x; char *q=&s; cout < 如上面的代码所显示,指针的特点
1、指针也是有类型的,比如int*、char*
2、不同类型的指针可以指向不同类型的对象。
3、不同类型的指针具有的尺寸却是相同的,这点,把上面的程序运行起来发现,在64位机的机器上运行得到的结果都是8。
int* p=&x;//&这个就叫取地址运算符,把x的地址取出来给p,让p指向它。cout<<*p< #includeusing namespace std; int main() { int x=3; int y=4; int* p=&x; *p=5; cout<<*p< *p=5;指的是改变指针指向对象的内容。
根据目录找到那一页,把那一页的内容给改了。
#includeusing namespace std; int main() { int x=3; int y=4; int* p=&x; p=&y; cout<<*p< 改变指针的指向。
改变目录记载的名称对应的页数。
对于指针的定义,一定要有初始的值,否则会指向奇怪的地方,一旦那个地方的数据是很重要的但却被修改的,是很危险的。
int *p=&val; int *p=nullptr;定义的方式无非也就是这两种。指向一个明确的地址,或者指向一块空指针(只要不随意指向就是安全的)。
指针主要的 *** 作就是解引用;增加(指针增加p=p+1;。这里的增加,指的是内存里面的地址指向了下一个位置,并不是内存增加了一个字节,而是根据指针类型增加,若是int类型的指针,在64位机上就是增加了4个字节,这里的增加在数组中会非常有用)、减少;判断等。
在某些情况下可能会想声明一个指针,但是有不确定它的类型那么可以使用
void *p=nullptr;说了那么多那么指针到底有什么好处呢,最重要的一点就是在传输的过程中大大减少了传输的数据量,只需要传一个地址就好,你说方不方便。就跟目录一样那么一本书的内容,只需要那几页目录就了解了,对机器的负担小多了。
对于指针需要注意的问题,就是指针的指向,一定要规定,要是不明确可以直接指向nullptr,但是不能不给地址,否则指向奇怪的地方是很危险的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)