0
点赞
收藏
分享

微信扫一扫

3.12study

茗越 2023-03-12 阅读 80

指针学习

#include <stdio.h>

/*
int main()
{
//printf("%d\n",sizeof(char*));//4
//printf("%d\n", sizeof(short*));//4
//printf("%d\n", sizeof(int*));//4
//printf("%d\n", sizeof(double*));//4

int a = 0x11223344;
int* pa = &a;
char* pc = &a;
printf("%p\n",pa);//009DF878
printf("%p\n", pa+1);//009DF87C
//int操作4字节,+1即增加四个字节


printf("%p\n", pc);//009DF878
printf("%p\n", pc+1);//009DF879
//char操作1个字节,+1即增加1个字节
return 0;
}
*/

/*
int main()
{
int arr[10] = { 0 };
char* p = arr;
int* pc = arr;
int i = 0;
for (i = 0; i < 10; i++)
{
*(pc + i) = 1;//改变数组内十个数字-->1个数字4个字节,int类型刚好改变4个字节
*(p + i) = 1;//改变数组内两个半数字-->1个数字4个字节,char类型只改变1个字节
}
return 0;
}
*/


//导致野指针-->指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)
/*
//1.指针未初始化
int main()
{
int a;//局部变量不初始化,默认是随机值
int* p;//局部的指针变量,就被初始化随机值

return 0;
}
*/

/*
//2.指针的越界访问
int main()
{
int arr[10] = { 0 };
int* p = arr;
int i = 0;
for (i = 0; i < 12; i++)
{//当指针指向的范围超出数组arr的范围时,p就是野指针
*p++ = i ;//先*后++
}

return 0;
}
*/

/*
//3.指针指向的空间释放
int* test()
{
int a = 10;
return &a;
}
int main()
{
int* p = test();
*p = 20;
return 0;
}
*/

int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
int* p = arr;
for (i = 0; i < 5; i++)
{
printf("%d ",*p);
//p=p+1 p++
//p += 1; //指针加上整数
p += 2;
}


return 0;
}

举报

相关推荐

0 条评论