小白记事本--学不明白还怕忘记指针--loading未完待续
--------------------------------------我是可爱的分割线- --------------------------------------
使用方式1:(&普通变量)
指针=&变量; *指针=指针指定变量的值;
int *p,*q,*t,a=1,b=2;
int *p=a;//也可以在定义的时候直接分配,不用写地址&
p=&a;q=&b;
r=p;
p=q;
q=r;
*p=2;*q=1;
使用方式2:(&数组,一维的)
指针=&数组名称[角标]; *指针=指针指定数组的值;
指针+i=&数组名称[角标+i];--------*其他形式*----------指针=&数组名称[角标]==指针=数组名称+角标;//p=a+1;
数组名称[角标]==*(数组名称+角标);//a[1]=*(a+1);----------------------------
形参:函数声明,函数解释;
实参:函数使用;
---------------------分割线--------------------------
使用方式3:(&数组,二维的)
指针=&数组名称[行][列]; *指针=指针指定数组的值;
指针+i=&数组名称[行][列]后第i个;--------*其他形式*----------指针=&数组名称[a][b]==指针=数组名称[a]+b==数组名称[0]+a*列数+b;//*(*(p+i)+j)==a[i][j];//行变量指针
数组名称[a][b]==*(数组名称[a]+b);//a[1]=*(a+1);
------------QAQ------------
由于二维数组有行列之分,所以也有行指针、列指针的区分。
---------------------我是QAQ分割线--------------------------
二维指针其它方式
- 行指针
定义 (p)[列数]; // 等价 a[][列数] 指向行,所以要知道 具体列数,
关联:p=a+i; //利用数组名 a ,和行数 i 共同关联,注意有第0行
注意:列数是定义的n列。
int (*p)[3],a[2][3]={"1","1","1","2","2","2"};//注意列数3必须保持一致
p=a+1;
printf("%d\n",*((*p+1)+j)); //指针名也可当成数组名来使用,p[i][j];
在行指针这里,可以实现把二重循环变成单重循环,依靠的就是行指针:
int (*p)[3],a[2][3]={"1","1","1","2","2","2"};
p=a; //p=a+0;
for(;p<2;p++) //此时通过行指针p控制每一行的循环
也要注意:
(*(p+i)+j) //此时为p[i][j]的地址
*(*(p+i)+j) //此时为p[i][j]具体值
- 列指针
定义 *p; // 在这里 指向列,所以要知道 具体行数,和行指针正好相反
关联:p=*a; // 列指针像是降维打击把 多行拼接成一行,计算的时候就是 i * n是完整的一组(行)
注意:此时的行数n是定义列数,而不是输入的
不能像行指针一样指针名当数组名了。
函数部分work(*a)这样才是列指针;而work(a)或者work(&a[0])这种才是行指针
*(p+i*n+j)//使用方法:此时==a[i][j];
---------------------orz分割线--------------------------
- 共性:都需要知道对方(行/列)具体的值
- 弊端:往往我们不知道究竟是几行几列,此时就是动态数组(?出场)
- 动态数组(申请动态空间,n可以变化的意思,你品你细品)
首先是申请一维的:就是一行有很多列。
此时解决了你不知道具体列数的问题,可以用变量n来代替而行指针的列数不能是变量。
int *p,n=10;//先有个指针再去关联
p=(int *)malloc(n*sizeof(int));//(15*sizeof(int));当然具体数值也可
for(int i=1;i<=n;i++)scanf("%d",p+i); //相当于 &p[i] 指针名可以当数组名使用嘛;由于给的是地址,而p+i不加星号本就是地址
齐次是申请二维的:就是有很多行有很多列。
此时解决了你不知道具体行数和列数的问题。
int *p,n=10,m=9;//先有个指针再去关联
p=(int *)calloc(n*m,sizeof(int));//当然也可以是(15*20,sizeof(int));用具体数值也可
for(int i=1;i<=5;i++)for(int j=1;j<=5;j++)scanf("%d",&p[i*m+j]); //相当于(p+i*m+j),m为申请的列数而不是j控制的5,使用时易出错(由于将二维拼接成一维数组的,计算必须用定义的列数而不是输入的列数)就类比列指针
释放:free(p);
---------------------可爱哒分割线--------------------------
- 指针数组&字符串
char *p[110];for(int i=1;i<=100;i++)p[i]=(char *)malloc(51*sizeof(char));
char *p[110],a[20][20];for(int i=1;i<=100;i++)p[i]=a[i];
关于输出、函数等好像还有些注意的东西,嘛,下次一定。
小白记事本--学不明白还怕忘记指针--loading未完待续相关推荐
- 学完oracle 再学mysql_一篇文章让Oracle程序猿学会MySql【未完待续】
一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...
- 小白来学C语言之数组与指针
前言:写东西一样要保存,ctrl s常按着,写了一晚上,第二天全没了,快要哭了.要不是自己在指针这里浪费了很多时间,我可能就不会重新写了,希望大家能看懂学会,别再走弯路了. 1.内存四区 . a) 代 ...
- 小白来学C语言之字符串与指针
初学C语言,指针的确是一个坎,但这又是基础,不得不学.真的学了好久,总是一知半解,也不怎么会做题,写下这篇博客,希望能帮助刚出门的小白,后续还有C语言指针例题以及详解. 不怎么会C语言数组与指针的可以 ...
- 跟我一起学jQuery——第二集(未完待续..)
<锋利的JQuery>第二版阅读笔记-第二章 跟我一起学jQuery--第二集 代码风格 jQuery选择器 接下来,就要开始正式学习jQuery的各种使用了.但是没有规矩不成方圆,所以我 ...
- Ubuntu下常用但是我容易忘记的命令总结(未完待续)
写在前面的话 这个主要是写给自己看的,还是用的少了,哎,弱啊. 1.文件的归档处理 1.1 zip命令和unzip命令 zip 命令: $ zip test.zip test.txt 它会将 test ...
- 未完待续:关于DB Link和SCN,你还需要知道的是...
前情回顾: 更新通报:Oracle修正了关于DB Link补丁的公告 解决方案:Oracle的DB Link问题及升级路线详述 预警揭秘:11.2.0.4前版必须在2019年4月升级 Oracle D ...
- python判断素数_小白学Python | 你还在说你入不了门吗
收藏的好多啊 原创不易,动动小手,点个赞啦!! 十二月份,天气有时候会很阴沉,一天都见不到太阳.气温也慢慢变冷了,晚上回家还是会感觉到衣服穿少了. 阴阴沉沉总会过去的,我还是期待阳春三月. 2019年 ...
- 小白学python需要多久_小白学Python | 你还在说你入不了门吗
收藏的好多啊 原创不易,动动小手,点个赞啦!! 十二月份,天气有时候会很阴沉,一天都见不到太阳.气温也慢慢变冷了,晚上回家还是会感觉到衣服穿少了. 阴阴沉沉总会过去的,我还是期待阳春三月. 2019年 ...
- 学UI设计之前要有什么基础?零基础小白可以学吗?
随着互联网的发展,以及人工智能的发展,我们不得不得到UI设计,UI交互.而对于传统的平面设计来讲,随着产业升级.技术转向,用人需求也在向UI设计师转变.UI设计的市场需求和行业发展前景也都发生着翻天覆 ...
最新文章
- ABAP 数字处理相关内容备注
- 3D Object Classification With Point Convolution —— 点云卷积网络
- flag push tcp 作用_TCP/IP协议到底在讲什么?
- abap 生成流水号每天从1开始_条码软件如何制作循环流水号
- android 底部滑动效果怎么做,Android实现简单底部导航栏 Android仿微信滑动切换效果...
- from mysql partition select_爬虫(九十九)mysql详解二
- awk:split()函数、数组、自定义函数
- Spring Boot + JPA + Oracle 自增长字段实现示例
- ~~堆优化版dijkstra
- Linux清理cache
- 13、XSI,信号量简介
- 解决百度文库文字无法复制
- H3C 无线控制器关闭信号认证
- MySQL主从配置(Django实现主从配置读写分离)
- 学习光线跟踪一样的自3D表征Ego3RT
- foxmail邮件服务器端口,Foxmail设置教程
- 备考BEC高级全记录:
- Argument(s) are different! Wanted:
- 如何看Mac电脑的具体CPU型号
- 网易视频云 php接口
热门文章
- 软件测试---正交试验法
- Java的Socket编程C/S小例子
- 学python lesson2
- python 字符串转函数名_Python 使用函数名(字符串)调用函数(4种方法)
- pythontcp服务器如何关闭阻塞_python 网络编程(socketserver,阻塞,其他方法)
- string数组转map_[#x27;1#x27;, #x27;2#x27;, #x27;3#x27;].map(parseInt) 映射解析
- linux下备份msyql数据库
- Activiti添加批注(comment)信息
- springboot 配置文件-yaml的用法
- java代码post接口请求 用 hutool工具类