文章目录
1.指针的概念(介绍)
2.内存(简介)
3.指针操作
正文
1.指针的概念(介绍)
指针就是地址,那么假设给定一个指针变量pa,用pa存放a的地址,则可以写为 pa = &a(把 a 的地址赋给 pa ,我们也可以理解为 pa “指向” a,当然,pa还可以指向别处,例如 pa = &b)
若要通过 pa 找到 a ,则可以利用 *pa (找出pa指向的值)即可取出 a 。
&是取地址操作符,获得变量(常量)在内存中的地址。
* 是解引用操作符,将指针变量 pa 解引用,即可找到 a。
注意 pa 是指针变量,pa 的类型是 int * (这里假设a是int类型,如果a是char类型,则pa的类型为char*)
例如:
int main()
{
int a = 0x11223344;
int* pa = &a;
printf("%d\n", a);
printf("%d\n", *pa);
//对比以上结果,结果相同
}
二级指针
2.内存(简介)
这个模块简单介绍内存相关内容
计算机内存的单位换算
32位环境下内存大小
下面讲解指针解引用时访问的权限
3.指针操作
通过指针访问数组
#include <stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//0 1 2 3 4 5 6 7 8 9
int* p = arr;
int sz = sizeof(arr) / sizeof(arr[0]);
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", *(p + i));//通过解引用找到数组中的数据
}
return 0;
}
下面通过指针减指针实现库函数strlen
strlen可用来求字符串的长度
char [] = " abcdef ";(注意:abcdef后还隐藏了字符\0)
strlen可以求\0之前的元素个数
了解了上面这些,我们来用指针减指针的方式实现我们自己模拟的my_strlen
#include <stdio.h>
int my_strlen(char* str)
{
char* tmp = str;//记录初始位置
while (str != '\0')
{
str++;//末尾位置
}
return str - tmp;//两个指针之间元素的个数
}
int main()
{
char arr[] = " abcdef ";//6
int ret = my_strlen(arr);
printf("%d", ret);
return 0;
}