1.指针是什么
指针就是地址,指针变量就是是用来存放内存地址的变量
2.指针类型
指针的类型决定了,对指针解引用的时候有多大的权限(能操作几个字节)。
比如: char* 的指针解引用就只能访问一个字节,而 int* 的指针的解引用就能访问四个字节。
指针的类型决定了指针向前或者向后走一步有多大(距离)。
int * +1---> 1*sizeof(int)==+4 int*+n------> n*sizeof(int) ===+4n
char*+1---->1*sizeof(char)==+1 char*+n----->n*sizeof(char)===+1n
3.野指针
野指针,指针未初始化和指针越界访问会生成野指针。
越界访问后,p里面的地址是野指针
4.二级指针
对ppa解引用,通过里面存放pa的地址找到值pa的值
对pa解引用,就是通过里面的地址找到a的值,里面存放的是a的地址
5.这个代码的结果是
#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个字节,int是4个字节,强转成short,本来走4个字节,现在只走两个改成0.
结果是0 0 3 4 5
6.scanf读到空格就不往后读了,可以用gets读数据