• C指针


    指针概念

      程序运行的数据存储于内存中,以唯一的地址编号标识存储,称为内存地址。指针变量是指的是存储了内存地址的变量。

    指针声明

      int *temp;

      int *temp;中的temp是变量名,*temp这样代表的是temp所指向的值(*:指针运算符,取其指向的内容)

    指针定义

      int count = 5;

      temp = &count; (&表示取变量的地址符)

      不可以将变量直接赋值给指针,比如int *temp = 5;报错

    指针类型

      指向变量

        前面的指针声明与定义已经说明

      数组指针

        数组名表示数组中首元素的地址。

        如:int a[10]; 那么a表示首元素地址,即 int *p = a; 可以使用*(p + 1)表示数组的第二个元素的值

        也可使用 *(a+1)表示第2个元素

        指针支持++和--操作

        如:

    #include <stdio.h>
    int main() {
        int a[6] = {3, 15, 6, 89, 63, 23};
        int *p = a;
        printf("%d\n", *(a+3));
        printf("%d\n", *(p+2));
        for (; p < (a+6); p++) {
            printf("num: %d\n", *p);
        }
        return 0;
    }

    输出结果为:

    89
    6
    num: 3
    num: 15
    num: 6
    num: 89
    num: 63
    num: 23

        

    多维数组:

    int *p2 = &b[1][0];
    printf("%d\n", *p2);

    则p2指向的是指向的是b[1][0]的值

      字符串与指针

        char str[] = " I love China ";
        // char *str = " I love China ";
        printf("%s\n", str);

        通过地址操作,直接操作字符串中的字符

      指向函数

        数据类型 ( * 指针变量名)(函数参数列表)

        int max(int a, int b) {
          return a + b;
        }
        int (*p)(int, int);
        p = max;
        int res = (*p)(3, 4);

        调用方式是(*指针变量名)(实参列表);

      指向指针的指针

           

           char * name[] = {"Follow me", "Basic", "Great Wall"};
    
        char **p;
    
        int i;
        for (i = 0;i < 5;i++){
    
          p = name + i;
    
          printf("%s\n", *p);
    
        } 

        数组中每一项存的是字符串数组指针,*p  取出来的为字符串的值

    参考文章:

    http://teren.itpub.net/post/15914/189516

  • 相关阅读:
    【Flex】Fluorinefx在IIS 5.1下响应很慢
    【Oracle】客户端查询数据库最近执行的SQL语句
    【Flex】Cairngorm中View层的交互
    ubuntu安装python3.6提示 无法修正错误 的 解决
    linux 如何杀死,暂停,继续一个后台进程
    Ubuntu虚拟机双网卡的配置(Uboot,tftp下载)(原创)
    Ubuntu的dpkg命令用法
    Vim Plus的搭建,并完善相关插件,打造最强vim编辑器(原创)
    ubuntu下minicom的使用方法(类似win的超级终端)
    Ubuntu安装ssh
  • 原文地址:https://www.cnblogs.com/haiyupeter/p/2671676.html
Copyright © 2020-2023  润新知