zoukankan      html  css  js  c++  java
  • C语言中的指针笔记

    C语言指针

    得到变量的地址

    可以使用&运算符找到变量保存在内存中的位置

    int x = 1;
    printf("x的内存地址是"%p
    ",&x)
    

    %p格式符将地址以16进制格式输出。
    &x将找到变量x的地址。一般我们会使用一个指针变量保存这个地址。

    指针变量是一个用来保存存储器地址的变量,当声明指针变量时,需要说明指针所指向的地址中保存的数据的类型:

    int *addr_x = &x;
    

    声明一个int类型的指针变量addr_x,&x或者x变量的地址,并保存这个地址。

    读取地址的内容

    根据存储器的地址读取保存在那里的数据,可以使用*运算符

    int v_s = *addr_x
    

    &运算符是接受一个数据,然后获取其内存地址。
    *是接收一个地址,然后获取这个数据的值。
    这两个运算符正好相反。

    改变地址的内容

    C语言中的指针变量还可以进行运算,可以使用*运算符。
    将指针变量放在赋值运算符左边。

    *addr_x = 100;
    

    代码示例

    #include<stdio.h>
    void go_source_east(int *lat,int *lon){
        //(右边*lat)读取lat地址的lat的内容,并改变地址中的内容(左边lat*)。
        *lat = *lat-1;
        *lon = *lon+1;
    }
    
    int main()
    {
        int latitude =32;
        int longitude =-64;
        // 通过&来找到这两个变量在内存中的地址
        go_source_east(&latitude,&longitude);
        printf("停!当前位置是:[%i,%i]
    ",latitude,longitude);
        return 0;
    }
    

    数组变量

    数组变量可以用作指针
    数组的指针指向的是数组第一个元素。
    由此可以得到下面的等式

    int d [] ={4,2,3}
    d[0]==*d
    

    地址是数字,所以可以进行指针运算,如果找存储器的下一个地址,可以增加指针的值。

    d[i]=*(d+i)
    

    数组的索引从0开始,正是为了方便找到元素的地址单元,指针需要加上的那个数字。
    同时数组的索引实际表示的是当前元素到第一个元素的偏移量,可不就是0开始么。

    代码示例

    #include<stdio.h>
    int main(){
    
        int d[] ={1,2,3,100};
        //以下四种方法相等
        printf("%i
    ", 3[d]);
       //下标运算符:表达式 x[y] 等效于(*((x)+(y)))
        printf("%i
    ", d[3]);
        printf("%i
    ", *(d+3));
        printf("%i
    ", *(3+d));
        return 0;
    }
    
  • 相关阅读:
    关于无法使用xx-pc附加到应用程序iisexpress.exe
    iis 7.5 0x80004005 静态文件 html、js、css 500错误
    递归删除指定目录下面的所有文件夹和文件
    http请求相关
    常用分页写法
    获取与Url链接相关的信息
    解决iis7 0x80070002 错误代码问题
    实现Cookie跨域共享
    文本框值改变事件
    动态加载、移除、替换JS和CSS
  • 原文地址:https://www.cnblogs.com/c-x-a/p/11523151.html
Copyright © 2011-2022 走看看