指针类型的权限(题)

目录

        1.题目

        2.思路


        1.题目

#include <stdio.h>
int main()
{
  int arr[] = {1,2,3,4,5};
  short *p = (short*)arr;
  int i = 0;
  for(i=0; i<4; i++)
  {
    *(p+i) = 0;
  }
   
  for(i=0; i<5; i++)
  {
    printf("%d ", arr[i]);
  }
  return 0;
}

        2.思路


  int arr[] = {1,2,3,4,5};
  short *p = (short*)arr;

        arr是首元素的地址,首元素是一个整型,用短整型的指针变量存起来(短整型

        的访问权限一次只有两个字节)

        
  int i = 0;
  for(i=0; i<4; i++)
  {
    *(p+i) = 0;
  }

        所以在操作指针的时候一次只能访问两个字节,每执行一次循环只会改变两个变量,

        在执行完循环的时候只会讲两个数改变位0;(因为一个数所占的内四个字节的内存空间)

        
   
  for(i=0; i<5; i++)
  {
    printf("%d ", arr[i]);
  }

        打印的是数组因为前面只改变了前两个数所以打印出来的是0,0,3,4,5
  return 0;
}

        1.题目

#include <stdio.h>
int main()
{
	int a = 0x11223344;
    char *pc = (char*)&a;
    *pc = 0;
    printf("%x\n", a);
    return 0;
}

       2.思路

#include <stdio.h>
int main()
{
    int a = 0x11223344;
    在内存中存储的时候是十六进制倒着存储的44 33 22 11
    char *pc = (char*)&a;
    用char类型的指针接收,char的权限,一次只能访问一个数
    *pc = 0;
    访问第一个数改成0(将44改为00)
    printf("%x\n", a);
    结果打印11 22 33 00.
    return 0;
}

指针数组是个数组(一个存放指针的数组)首先是个数组必须有数组的特性:在没有具体元素的时候需要标明数组的元素有多少个。类型是指针的类型

猜你喜欢

转载自blog.csdn.net/weixin_60359155/article/details/121443239
今日推荐