首页 > 其他分享 >指针初阶001

指针初阶001

时间:2022-10-26 13:14:09浏览次数:45  
标签:10 arr 初阶 int vp 001 printf 指针

1.指针是什么?

2.指针和指针类型

3.野指针

4.指针运算

5.指针和数组

6.二级指针

7.指针数组

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.指针是编程语言中的一个对象,利用地址,他的值直接指向存在电脑存储器中的另一个地方的值,

地址形象的成为指针。

编号 - 地址 - 指针

 

2.指针和指针类型:int*p,char*p,指针类型不同,他们所占的地址空间大小不同,但是在

X86上,一个地址所占4个字节,在X64上,一个地址所占8个字节

指针类型的大小决定了:指针解引用的权限有多大, 指针向前或者向后走一步有多长

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
    //指针类型的意义
    // 指针解引用的权限有多大
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; 
    int* p = arr;//数组名表示数组首字母
    char* pc = arr;
    printf("%p\n", p); //000000991F2FF938
    printf("%p\n", pc);  //000000991F2FF938
    printf("%p\n", p + 1); //000000991F2FF94C
    printf("%p\n", pc + 1); //000000991F2FF939

    int arr[10] = { 0 };
    int* p = arr;
    for (int i = 0; i < 10; i++)
    {
        *(p + i) = 1; // 11111111111
    }

    return 0;
}

3.野指针

野指针的产生:指针没有初始化,指针越界访问,指针是否有效,指针空间释放

注意:指针初始化:int *p = NULL;这样的指针也不能用

 

4.指针的运算:

4.1指针的加减运算:

#define KING 5
int main() {
    //1.指针的加减整数运算
    float values[KING];
    float* vp;
    for (vp = &values[0]; vp < &values[KING];) 
    {
        *vp++=0;
    }
    printf("%.1f\n", values[1]); // 结果全是0;
    return 0;
}

 

4.2 指针 - 指针

指针 - 指针得到的是两个指针之间元素的个数,但是要保证指针同类型,指针指的是同一块空间

    //指针 - 指针
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    int* p = arr;
    printf("%d\n", arr[9]-arr[0]); // 9
    return 0;

 

标签:10,arr,初阶,int,vp,001,printf,指针
From: https://www.cnblogs.com/kingxyg/p/16827476.html

相关文章