指针的定义方式是:
type + *
char* 类型的指针是为了存放 char
类型变 量的地址。
short*
类型的指针是为了存放
short
类型变量的地址。
int*
类型的指针是为了存放 int 类型变量的地址。
指针的类型,决定了指针向前或者向后走一步的举距离。
实例1:
#include <stdio.h>
int main()
{
int n = 0x11223344;
char *pc = (char *)&n;
int *pi = &n;
*pc = 0; //重点在调试的过程中观察内存的变化。
*pi = 0; //重点在调试的过程中观察内存的变化。
return 0;
}
首先,十六进制在内存中逆向存储, 为: 44 33 22 11
第一种情况:当*pc = 0 pc为char类型只修改 1 字节,将44赋值为0
得到 0x11223300
第二种情况, 当*pi = 0 pi为int 类型修改4字节 结果为 0x00
实例2:
#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;
}
当指针为short 类型时,每次只修改2字节
对于数组arr来说,每个元素都占4字节
所以short类型的指针移动4次,共移动了8字节,只讲 1 , 2 修改为0其余不变
结果为 0 0 3 4 5
当题目变,我们把short 改为char ,共移动4字节, 结果为 0 2 3 4 5
改变为int , 共移动16字节,结果为 0 0 0 0 5