#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
指针
int main()
{
//int a = 10;
//int* p = &a;// 指针变量
//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; // 类型不一样,结果也不一样 |char 类型操作1个字节
// 指针类型决定了指针进行解引用操作的时候,能够访问空间的大小
// int*p ;*p能访问4个字节
// char*p ;*p能访问1个字节
printf("%p\n", pa);
printf("%p\n", pa+1);
// 指针类型决定了:指针走一步走多远(指针的步长)
// int*p ; p+1->4
// char*p; p+1->1
printf("%p\n", pc);
printf("%p\n", pc+1);
*pa = 0;
return 0;
}
int main()
{
int arr[10] = { 0 };
int* p=arr;// 数组名-首元素的地址
int i = 0;
for (i = 0; i < 10; i++)
{
*(p + i) = 1; // 不要弄野指针
}
return 0;
}
野指针的位置是不确定的
int main()
{
// 1.未初始化的指针变量
//int* p;//局部变量不初始化,里面默认存放的是一个随机值
//*p = 20;
// 2. 指针越界
//int a[10] = { 0 };
//int i = 0;
//int* p=a;// 数组不需要加&,因为传过去的本来就是数组首元素地址
// for (i = 0; i < 12; i++)// 后置++是先使用完再+=
// {
// *p = i; // 不要弄野指针
// p++;
// //*p++ = i;
// }
return 0;
}
3. 指针指向空间释放
int* test()
{
int a = 10;
return &a;// 创建的临时变量,用完就销毁
}
int main()
{
int* p = test();
printf("%d\n", *p);
return 0;
}
int main()
{
int a = 10;
int*pa = &a;// 初始化
int*p = NULL;// 给指针一个空指针 -初始化指针
*pa = NULL; // pa不再指向&a
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 < sz; i++)
{
printf("%d ", *p);
p++;
}
return 0;
}
指针 - 指针得到的是中间元素的个数
int my_strlen(char* str)
{
char* start = str;// 首元素指针指向内容
char* end = str;
while (*end != '\0')
{
end++;
}
return end - start;
}
int main()
{
// strlen - 求字符串长度
// 递归 - 模拟实现了strlen - 计数器的方式1, 递归的方式2
//
char arr[] = "bit";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
C语言允许数组指针向后一个指针比较,不允许指针向前一个指针比较
int main()
{
int arr[10] = { 0 };
int* p = arr;
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%p ======== %p\n", p + i, &arr[i]);
}
return 0;
}
int main()
{
int a = 10;
int* pa = &a;
int* *ppa = &pa;// 二级指针
return 0;
}
好孩子 -- 孩子
指针数组- 数组 - 存放指针的数组
数组指针 - 指针
int main()
{
int a = 10;
int b = 29;
int c = 30;
//int* pa = &a;
//int* pb = &b;
//int* pc = &c;
// 整型数组 - 存放整型
// 字符数组 - 存放字符
// 滋镇数组 - 存放指针
int* arr2[3] = {&a,&b,&c};
int i = 0;
for (i = 0; i < 3; i++)
{
printf("%d ", *(arr2[i]));
}
return 0;
}
指针/ 入门
最新推荐文章于 2024-07-15 17:49:33 发布