指针初探

来源:互联网 发布:财富共赢集团 知乎 编辑:程序博客网 时间:2024/06/04 19:45

放下C和C++很久,再次拿起来最值得一看的当然是指针,复习一遍的速度虽然是很快的,但长时间总会忘记,这里就简要的记录下。C和C++两者在指针上大体是相似的,这里就是用C++为例来写一下,其中提到一些指针的基本用法和要注意的小细节。

////  pointer.cpp//  FirstMacOSCpp////  Created by NicolasYam on 2017/11/2.//  Copyright © 2017年 NicolasYam. All rights reserved.//#include <iostream>int main(int argc, const char * argv[]) {    using namespace std;    // 赋值变量地址并显示    int num = 1024;    int* addr = &num;    cout << "num addr = " << addr << endl;    // 通过指针修改值本身    *addr += 1;    cout << " *addr = " << *addr << endl;    cout << "num = " << num <<endl;    /*     在不使用new关键字的情况下不要用以下方法初始化指针     long* addr;     *addr = 23333;     此时addr声明时是未知的,赋值后会覆盖原有在addr上的数据     而new则不同,其会找到可以分配的内存进行分配     */    //使用new来分配内存, delete释放内存    int* pt = new int;    *pt = 1001;    double* pd = new double;    *pd = 65535.0;    cout << "addr " << pt         << " is " << *pt << endl;    cout << "sizeOf *pt = " << sizeof(*pt) << endl;    cout << "addr " << pd         << " is " << *pd << endl;    cout << "sizeOf *pd = " << sizeof(*pd) << endl;    delete pt;    delete pd;    //使用new和指针创建动态数组    int* arr = new int[10];    arr[0] = 101;    arr[2] = 103;    cout << "arr[0] = " << arr[0]         << " arr[1] = " << arr[1]<<endl;    arr += 1;    cout << "arr[0] = " << arr[0] <<endl;    arr -= 1;    delete [] arr;    //指针算术    //C++中对于数组名和指针的表示如arr[i],都将转换为*(arr + i)    //指针加1,增加的值等于指向类型所占字节数    double wage[3] = {10000.0, 20000.0, 30000.0};    double* pw = wage;    cout << "wage = " << wage         << " pw = " << pw << endl;    cout << "*(pw + 1) = " << *(pw + 1) << endl;    pw += 1;    cout << "pw + 1 = " << pw << endl;    //sizeof对于数组和指针的区别    //对于数组的到的事数组的长度,指针则是指针的长度    cout << "sizeof wage = " << sizeof(wage)         << " sizeof pw = " << sizeof(pw) << endl;    return 0;}
原创粉丝点击