指针定义 野指针 指针类型大小

//指针是什么?指针是变量,存放内存单元的地址
//一个内存多大?1个字节
//如何编制?机器通电...32根地址线4个字节  64根地址线8个字节
#include <stdio.h>

int *test();

int main()
{
    //1.指针类型的大小
    printf("%d", sizeof(char*));//8
    printf("%d", sizeof(short *));//8
    printf("%d", sizeof(int*));//8
    printf("%d", sizeof(double*));//8
//    //通过以上的指针变量的结果,我们是不是说这个指针变量用哪个都行,或者说没有意思?
//    //指针大小决定指针进行解引用操作的类型,能够访问空间大小,例如:
//    //int* p;    *p能够访问4个字节
//    //char* p;   *p能够访问1个字节
//    //double* p; *p能够访问8个字节
//    //目的:选择合适类型(空间大小)
//    int a = 0x11223344;
//    int* pa = &a;
//    int* pc = &a;
//    printf("%p ",pa);
//    printf("%p ",pa+1);
//
//    printf("%p ",pc);
//    printf("%p",pc+1);
//
//    //指针类型决定了:指针走一步走多远(指针步长)单位:字节
//    //int* p;p+1     --》4
//    //char* p;p+1    --》1
//    //double* p;p+1  --》8
    //2.数组指针
//    int arr[10] = {0};
//    int* p = arr;
//    int i;
//    for (i = 0; i < 10 ; ++i)
//    {
//        *(p+i) = 1;
//    }
     //3.野指针
    //3.1指针未初始化
//    int* p;//局部变量不初始化,里边默认的是一个随机值
//    *p = 20;
//    return 0;
    //3.2指针越界
//    int arr[10] = {0};
//    int* p = arr;
//    for (int i = 0;  i < 12; ++i)
//    {
//        //*(p++) = i;// *p++:解引用操作符后++
//        *p = i;
//        p++;
//    }
//    return 0;

//    //3.3子函数返回局部变量
//    int* p = test();
//    printf("%d",*p);
//    return 0;
}

int *test() {
    int a = 10;//调用完后销毁
    return &a;
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值