指针初阶(2)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//int* test()
//{
// int a = 10;
// return &a;
//}
//int main()
//{
// //野指针-指针指向的位置是不可知的(随机的,不正确的,没有明确限制的)
//
// //1.指针未初始化
//
// int* p;//p是一个局部的指针变量,局部变量不初始化,默认是随机值
// *p = 20;//非法访问内存
//
// //2.越界访问
//
// int arr[10] = { 0 };
// int* p = arr;
// int i = 0;
// for (i = 0; i <= 10; i++)
// {
// *p = i;
// p++;//指针指向的范围超出数组arr的范围
// }
//
// //3.指针指向的空间释放了
// int* p=test();
// *p = 20;//a出了test函数就销毁了,空间释放了
//
// //如何避免野指针
//
// //1.指针初始化
// //当前不知道p应该初始化为什么地址时,直接初始化为NULL
// int* p = NULL;
// //明确知道初始化的值
// int a = 10;
// int* ptr = &a;
//
// //2.小心指针越界
// //C语言本身是不会检查数据的越界行为
//
//
// //3.指针指向空间释放及时置NULL
//
// //4.指针使用之前检查有效性
// int* p = NULL;
// if(p!=NULL)
// *p = 10;
//
// return 0;
//}
//指针运算
//指针+-整数
//指针-指针
//指针的关系运算
//int main()
//{
// #define N_VALUES 5
// float values[N_VALUES];
// float* vp;
// //指针+-整数;指针的关系运算
// for (vp = &values[0]; vp < &values[N_VALUES];)
// {
// *vp++ = 0;
// }
//
// return 0;
//}
//int main()
//{
// int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
// int* p = arr;
// int* pend = arr + 9;
// while (p <= pend)
// {
// printf("%d\n", *p);
// p++;
// }
// return 0;
//}
//int main()
//{
// int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
// printf("%d\n", &arr[9] - &arr[0]);//9//指针-指针得到的是两个指针之间的元素个数
//
// char c[5];
// //指针和指针相减的前提
// //两个指针指向同一块空间
// //
// printf("%d\n", &arr[9] - &c[0]);//13//从“char *”到“int *”的类型不兼容
//
// return 0;
//}
#include<string.h>
// 计数器写法
//int my_strlen(char* str)
//{
// int count = 0;
// while (*str != '\0')
// {
// count++;
// str++;
// }
// return count;
//}
//int main()
//{
// //strlen();-求字符串长度
// int len =my_strlen("abc");
// printf("%d\n", len);
// return 0;
//}
指针-指针写法
//int my_strlen(char* str)
//{
// char* start = str;
// //存第一个元素的地址
// while (*str != '\0')
// {
// str++;
// }
// //得到\0的地址,存在str里
// return str - start;
//}
//int main()
//{
// //strlen();-求字符串长度
// int len =my_strlen("abc");
// printf("%d\n", len);
// return 0;
//}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律