• 指针锱铢---指针的声明赋值,野指针的灾难性后果


    #include <stdio.h>
    int main()
    {
       int a = 10;
      int *p;
      p = &a;
      printf("这就是指针p指向的地址里存的值%d ,说起来容易,用起来准糊涂 ", *p);
      //改了指针指向的地址的内容
      *p = 8888;
      printf("这样一来,a的值就变成了%d ",a);
      //int *wenwa=NULL;//野指针,通常不允许给野指针赋值,万一指向的是操作系统核心模块地址,放开肆意修改将导致严重后果
      //*wenwa = 6666;
      //printf("来试试我的野指针%d",*wenwa);
      getchar();
      return 8;
    }

    
    

     

    #无类型指针
    C语言中可以将任何类型的指针赋值给void类型指针
    使用时需要指定空类型指针要强转的类型

    #include<stdio.h>
    #include<stdlib.h>
    #pragma warning(disable:4996)
    
    void main()
    {
        void *emptyp;
        unsigned int a = 10;
        emptyp = &a;
        int * myintpointer;
        myintpointer = emptyp;//仅在c语言中可以如此使用,c++则为非法操作
        printf("*myintpointer=%d", *myintpointer);
        system("pause");
    }
    #include<stdio.h>
    #include<stdlib.h>
    #pragma warning(disable:4996)
    
    void main()
    {
        int myarray[3] = {"厉智","陈培昌","程劲"};
        printf("myarray%d
    ",myarray);
        printf("&myarray[0]=%d
    ",&myarray[0]);
        system("pause");
    }
    //array &array[0]都表示数组的地址

    64位操作地址内存寻址是8个字节,32位是4个字节
    在C语言中数组名称代表数组的首地址,如果取数组名称的地址,C语言认为在取数组首个元素的地址(也即数组的首地址)

     应用:利用指针推进的特性,访问数组第n个元素

    #include<stdio.h>
    #include<stdlib.h>
    #pragma warning(disable:4996)
    
    void main()
    {
        char mystr[20] = "chenpeichang";
        char str2[10] = { 0 };
        char * p;
        char *p1;
        p = &mystr[0];
        p1 = &str2[0];
        p1 = p;
        printf("%c
    ", *(p+3));
        system("pause");
    }
    •  指针数组

    char (*p)[10] 含义,一个含有10个元素的数组,每个元素都是char类型指针
    所以运行printf(sizeof(p[0])) 结果为4,因为指针类型的长度都固定为4
    同样,char(*p)[10]可以指向任何一个含有10个元素的char类型数组,but如果元素个数不等于10,则无法指代;
    由于指针是一个变量,那么指针也有他的地址!!!所以有指向指针的指针应运而生,谓之二级指针
    int a = 10;
    int *p = &a;
    int **pp = &p;
    **pp = 100;(*pp是指向p的地址,**pp是拿到p存放的值,以便查阅,修改)
    理论上写上10级,20级都可以,但实战中顶多到二级指针,三级指针在学术探讨中也十分少见
    指针多见于用作函数的参数

  • 相关阅读:
    Excel多工作表快速汇总,简单才是硬道理
    Excel中的条件汇总函数,看过这些你就懂
    SUMPRODUCT函数详解
    关于iOS中的文本操作-管理text fields 和 text views
    ios开发之多线程资源争夺
    关于ios中的文本操作-简介
    ios开发小技巧之提示音播放与震动
    ios开发小技巧之摇一摇截屏
    ios开发之网络数据的下载与上传
    ios开发之网络访问的数据类型
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/10312230.html
Copyright © 2020-2023  润新知