指针(Day-7)
发布日期:2022-02-08 18:03:20
浏览次数:26
分类:技术文章
本文共 1773 字,大约阅读时间需要 5 分钟。
1. 存储及访问:
- 内存单元:一个字节,每个内存单元都有编号,也就是内存单元的地址。
- 访问方式: 直接访问:直接通过名字访问; 间接访问:不知道变量名,通过地址名访问,找到变量所在的地址。 指针变量存储的是地址
定义指针变量:
(1) 定义:类型修饰符 (int *) 变量名 初值 int *p = NULL; (指针变量所占的字节数和OS有关,32位-4字节 64位-8字节)(2) 打印指针的类型转换符:%p
取值:* 取址:& int *是类型修饰符:int型的指针变量 (3) 修改,赋值
int a = 5, b = 8; int *pa = &a; *pa = 6; // 修改了a里面的值 赋值工作 b = *pa; // 修改了b的值,对b进行赋值 取值工作 int c = 5, d =78; // 连续定义: int *pc = &c, *pd = &d;
2. 指针与数组,字符串
int a[5] = { 1, 2, 3, 4, 5}; int *p = NULL; p = a; p = &a[0]; // 数组名就是数组的首地址 p = &a[0]这样也可以 /* p = &a[0]; p + 1 = &a[1]; p + 2 = &a[2]; ... */ // 指针的偏移量和指向的数据有关 printf("%p\n", p); printf("%p\n", p + 1); printf("%p\n", p + 2); printf("%p\n", p + 3); printf("%p\n", p + 4); for (int i = 0; i < 5; i ++) printf("%d ", *p++); // p[i]------->1, 2, 3, 4, 5
数组遍历:数组名[下标] a[i] 指针变量:*[p + i] = a[i] 指针变量:p[i] = a[i]
指针和数组的区别:
指针和数组名都可以通过下标的方法和指针法(p+1)来访问数组元素- 指针可以修改指向 数组名是常量, 表示首元素的地址,不能改变
- 指针的存储空间:4/8字节 数组的存储空间:元素个数*元素存储空间
char name[] = "song"; char *pn = name; *pn = ‘a'; // 结果是:aong char *name1 = "zhao"; printf("%s “,name1); // 可以直接这样输出
- 定义字符串有两种方式:
- 使用数组定义字符串——> 字符串变量 字符串元素可被改变
- 使用指针定义字符串——> 字符串常量 字符串元素不可以改变
定义:数组中的元素都是指针
char str1[3] = { "iOS", "Android", "HTML5"}; /* str1[0] 是第一个字符指针,指向常量区的iOS str1[1] 是第二个字符指针, 指向常量区的Android str1[2] 是第二个字符指针, 指向常量区的HTML5 */ char *name = "zhao"; //指向常量区 char *names[] = { "Android", "Java", "c#"}; //指向常量区
3. 指针与函数
void changeValue(int *a, int *b){ int temp = *a; *a = *b; *b = temp; // 指针作为函数参数进行传递,可以实现形参的改变,作用到实参}
void printArray(int *a, int count){ for (int i = 0; i < count ; i ++) { printf("%d ",*a++); }}int main(){ int a[4] = { 23, 45, 12, 78}; printArray(a, 4); // 指针作为形参 int *p = a; printArray(p, 4); // 指针作为实参}
转载地址:https://blog.csdn.net/Evelynzn/article/details/48463651 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年03月28日 23时42分53秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Datawhale组队学习周报(第010周)
2019-04-27
【直播】杨毅远:集成学习答疑直播之六 -- 幸福感预测案例实战
2019-04-27
如何使用Python的进度条?
2019-04-27
如何利用情感词典做中文文本的情感分析?
2019-04-27
【青少年编程】【Scratch】06 侦测模块
2019-04-27
【直播】李祖贤:集成学习答疑直播之八-- 集成知识点回顾与补充
2019-04-27
Datawhale组队学习周报(第013周)
2019-04-27
如何设置matplotlib中x,y坐标轴的位置?
2019-04-27
【第15周复盘】B站是个学习的网站
2019-04-27
黄家懿:河北高校邀请赛 -- 二手车交易价格预测决赛答辩
2019-04-27
如何利用pyecharts绘制酷炫的桑基图?
2019-04-27
王朝阳:河北高校邀请赛 -- 二手车交易价格预测决赛答辩
2019-04-27
Scratch等级考试(二级)模拟题
2019-04-27
如何在Jupyter Lab中显示pyecharts的图形?
2019-04-27
什么是Python之禅?
2019-04-27
【青少年编程】【Scratch】01 运动模块
2019-04-27
json的序列化与反序列化
2019-04-27
【第16周复盘】学习的飞轮
2019-04-27
如何利用pyecharts绘制炫酷的关系网络图?
2019-04-27
NCEPU:线下组队学习周报(007)
2019-04-27