200813_C指针
目录
- 一、学习的知识点
- 指针
- 指针高级
- 数组指针
- 结构体指针
- 二、上课没有听懂或者没有理解的地方
- 三、当天学习的收获
- 四、作业的思路、不会的地方
- 五、其他需要反馈的问题
- 六、心得体会
一、学习的知识点
指针
- 定义指针变量记得初始化,或者初始化为NULL:void *p=NULL;
- 指针变量存放的是地址,可以比较大小,但必须是同类型。
- 数组作为函数形参的三种写法:p【】,p【20】,*p
- NULL//值为0,无类型的指针,stdio.h
- char *temp=“hello”,"hello"是常量,存储在常量区。temp指针变量指向的是一个字符串常量,此时不能通过指针变量修改常量的内容
char name[20]="admin";
char pwd[20];
pwd=name; //错误
char *pstr=name; //指针指向字符串变量,可以通过下标或者地址偏移方式改变值
char *temp="hello"; //temp指针指向 字符串常量
指针高级
数组指针
{ int num[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int i=0,j=0;int (*p)[4]=num; //指向二维数组的指针---行指针(数组指针),每行4个元素,不可省int *p[4]; //指针数组 指针类型的数组,数组里面保存的是int类型的指针,占用4*4-16个字节空间/*行指针-本质是指针,使用在二维数组作为函数参数的时候,行指针+1,偏移1行指针数组-本质是数组,通常可以应用在二维字符数组上,保存多个字符串*/char *stu[20]={"lili","rose","lucy"}; //指针数组,保存三个字符串在常量区对应的地址puts(stu[1]); //访问到rosep++; //偏移行//访问二维数组的元素printf("%d\n",num[1][1]); //下标法for(i=0;i<3;i++){for(j=0;j<4,j++){printf("%d\t",num[i][j]); //下标法printf("%d\t",*(num[i]+j)); //每一行的首地址偏移,取内容printf("%d\t",*(*(num+i)+j)); //printf("%d\t",*(num+i)[j]); //*(num+i)[j]->*(p)[j]printf("%d\t",*(&num[0][0]+4*i+j)); //num &num[0][0]+4*i+j}printf("\n");}printArry(num,3); //函数调用
}
//int p[3][4] int p[][4] int (*p)[4] 二维数组形参方式
void printArry(int num[][4],int row)
{int i=0,j=0;for(i=0;i<row;i++){for(j=0;j<4,j++){//printf("%d\t",num[i][j]); //下标法//printf("%d\t",*(num[i]+j)); //每一行的首地址偏移,取内容//printf("%d\t",*(*(num+i)+j)); //printf("%d\t",*(num+i)[j]); //*(num+i)[j]->*(p)[j]//printf("%d\t",*(&num[0][0]+4*i+j)); //num &num[0][0]+4*i+j}printf("\n");}
}
结构体指针
保存的是结构体变量对应的地址
typedef struct staff
{}STAFF_T;STAFF_T user={1001,"admin","123456"};
STAFF_T *puser=NULL;puser=&user;//结构体指针变量访问数据成员的格式:指针变量名+->变量名
printf("%s\n",puser->name);
二、上课没有听懂或者没有理解的地方
无
三、当天学习的收获
学习了访问二维数组元素的几种方法
四、作业的思路、不会的地方
使用结构体指针作为形参
五、其他需要反馈的问题
无
六、心得体会
数组指针和指针数组比较难理解消化,多学多练。
200813_C指针相关推荐
- MIT 6.s081学习笔记
MIT 6.s081学习笔记 introduction 计算机组织结构: 最底部是一些硬件资源,包括了CPU,内存,磁盘,网卡 最上层会运行各种应用程序,比如vim,shell等,这些就是正在运行的所 ...
- Go 知识点(19)— Go 语言中的野指针
野指针是一种指向内存位置是不可知的指针,一般是由于指针变量在声明时没有初始化所导致的.在 Go语言中,布尔类型的零值为 false,数值类型的零值为 0,字符串类型的零值为 "", ...
- C++ 笔记(27)— 指针变量、数组和指针、指针数组、数组指针、指针常量与常量指针
1. 什么是指针变量? 指针变量是专门有一个变量来存放指针. int main(int argc, char *argv[]) {int a = 10;int *p = &a; //通过取地址 ...
- Go 学习笔记(71)— Go 接口 interface (接口定义、接口实现、接口调用、值接收者、指针接收者)
1. 接口的定义 接口是和调用方的一种约定,它是一个高度抽象的类型,不用和具体的实现细节绑定在一起.接口要做的是定义好约定,告诉调用方自己可以做什么,但不用知道它的内部实现,这和我们见到的具体的类型如 ...
- Go 学习笔记(70)— Go 变量声明、变量初始化、值类型变量赋值、指针类型变量赋值
1. 变量声明 要单纯声明一个变量,可以通过 var 关键字,如下所示: var s string 该示例只是声明了一个变量 s,类型为 string,并没有对它进行初始化,所以它的值为 string ...
- c/c++中的函数指针和指针函数
定义 1.指针函数,本质是函数,返回值为指针,形如,int *pfun(int, int),由于"*"的优先级低于"()"的优先级,所以等同于int *(pfu ...
- 关于C语言中的数组指针、指针数组以及二级指针
概念解释 数组指针:首先它是一个指针,它指向一个数组,即指向数组的指针:在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.数组指针指向的是数组中的一个具体元素,而不是整个数组,所 ...
- 【数据结构】链表中的 指针,地址
数据结构中跳过集合,直接开始线性结构 线性结构中单链表的操作涉及到给一个变量赋值地址,所以涉及到了指针 通过指针里的地址很方便找到节点 但指针这里绕了我很长时间,不论学了多少遍也不敢说把指针学会了 地 ...
- Qt实现 指针式时钟+动态时钟 (详细注释)
先上效果图: 点击运行后首先是一个指针式时钟窗口,点击Digital Clock->可以跳转到数字时钟窗口,再点击Move Clock->可以还原为指针式时钟窗口 关于整个程序的讲解都在代 ...
最新文章
- 儿童吹泡泡水简单配方_自制泡泡水最简单配方的做法教程
- 虚函数和作用域(C++ primer 第五版)P550
- 业务需求、客户需求与功能需求
- springboot 整合mybatis_SpringBoot整合Mybatis、MybatisPuls
- Eclipse-class文件中文乱码
- 时域上的乘积等于频域上的卷积_时频域分析的一些常用概念补充(线性时不变系统、卷积、冲激响应、窗函数等)...
- 字符串,那些你不知道的事 1
- 07.计算Nova→2.nova组件详解→2.nova-scheduler
- 线性代数矩阵思维导图_斌叔2021考研数学公式:几种特殊形式的矩阵
- csgo准星设置代码_csgo准星代码怎么输入
- Flash Builder4.7安装
- 求职、跳槽中英文简历模板下载集合
- 高通平台msm8953 display子系统学习
- linux 下的无线网络配置,详解在LINUX环境下怎样设置无线网络配置
- 概率论复习笔记【3条件概率】
- ever 逾期_4ever的完整形式是什么?
- latex格式的英文文章中引用的中文参考文献在BIBTEX中的格式是如何的
- 小程序的退出登陆功能实现代码
- unity报错Deterministic compilation failed. You can disable Deterministic builds in Player Settings
- 兔子繁殖问题,兔子有寿命限制