目录
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; }
指针数组是个数组(一个存放指针的数组)首先是个数组必须有数组的特性:在没有具体元素的时候需要标明数组的元素有多少个。类型是指针的类型