--------------------------------------我是可爱的分割线- --------------------------------------

使用方式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未完待续相关推荐

  1. 学完oracle 再学mysql_一篇文章让Oracle程序猿学会MySql【未完待续】

    一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...

  2. 小白来学C语言之数组与指针

    前言:写东西一样要保存,ctrl s常按着,写了一晚上,第二天全没了,快要哭了.要不是自己在指针这里浪费了很多时间,我可能就不会重新写了,希望大家能看懂学会,别再走弯路了. 1.内存四区 . a) 代 ...

  3. 小白来学C语言之字符串与指针

    初学C语言,指针的确是一个坎,但这又是基础,不得不学.真的学了好久,总是一知半解,也不怎么会做题,写下这篇博客,希望能帮助刚出门的小白,后续还有C语言指针例题以及详解. 不怎么会C语言数组与指针的可以 ...

  4. 跟我一起学jQuery——第二集(未完待续..)

    <锋利的JQuery>第二版阅读笔记-第二章 跟我一起学jQuery--第二集 代码风格 jQuery选择器 接下来,就要开始正式学习jQuery的各种使用了.但是没有规矩不成方圆,所以我 ...

  5. Ubuntu下常用但是我容易忘记的命令总结(未完待续)

    写在前面的话 这个主要是写给自己看的,还是用的少了,哎,弱啊. 1.文件的归档处理 1.1 zip命令和unzip命令 zip 命令: $ zip test.zip test.txt 它会将 test ...

  6. 未完待续:关于DB Link和SCN,你还需要知道的是...

    前情回顾: 更新通报:Oracle修正了关于DB Link补丁的公告 解决方案:Oracle的DB Link问题及升级路线详述 预警揭秘:11.2.0.4前版必须在2019年4月升级 Oracle D ...

  7. python判断素数_小白学Python | 你还在说你入不了门吗

    收藏的好多啊 原创不易,动动小手,点个赞啦!! 十二月份,天气有时候会很阴沉,一天都见不到太阳.气温也慢慢变冷了,晚上回家还是会感觉到衣服穿少了. 阴阴沉沉总会过去的,我还是期待阳春三月. 2019年 ...

  8. 小白学python需要多久_小白学Python | 你还在说你入不了门吗

    收藏的好多啊 原创不易,动动小手,点个赞啦!! 十二月份,天气有时候会很阴沉,一天都见不到太阳.气温也慢慢变冷了,晚上回家还是会感觉到衣服穿少了. 阴阴沉沉总会过去的,我还是期待阳春三月. 2019年 ...

  9. 学UI设计之前要有什么基础?零基础小白可以学吗?

    随着互联网的发展,以及人工智能的发展,我们不得不得到UI设计,UI交互.而对于传统的平面设计来讲,随着产业升级.技术转向,用人需求也在向UI设计师转变.UI设计的市场需求和行业发展前景也都发生着翻天覆 ...

最新文章

  1. ABAP 数字处理相关内容备注
  2. 3D Object Classification With Point Convolution —— 点云卷积网络
  3. flag push tcp 作用_TCP/IP协议到底在讲什么?
  4. abap 生成流水号每天从1开始_条码软件如何制作循环流水号
  5. android 底部滑动效果怎么做,Android实现简单底部导航栏 Android仿微信滑动切换效果...
  6. from mysql partition select_爬虫(九十九)mysql详解二
  7. awk:split()函数、数组、自定义函数
  8. Spring Boot + JPA + Oracle 自增长字段实现示例
  9. ~~堆优化版dijkstra
  10. Linux清理cache
  11. 13、XSI,信号量简介
  12. 解决百度文库文字无法复制
  13. H3C 无线控制器关闭信号认证
  14. MySQL主从配置(Django实现主从配置读写分离)
  15. 学习光线跟踪一样的自3D表征Ego3RT
  16. foxmail邮件服务器端口,Foxmail设置教程
  17. 备考BEC高级全记录:
  18. Argument(s) are different! Wanted:
  19. 如何看Mac电脑的具体CPU型号
  20. 网易视频云 php接口

热门文章

  1. 软件测试---正交试验法
  2. Java的Socket编程C/S小例子
  3. 学python lesson2
  4. python 字符串转函数名_Python 使用函数名(字符串)调用函数(4种方法)
  5. pythontcp服务器如何关闭阻塞_python 网络编程(socketserver,阻塞,其他方法)
  6. string数组转map_[#x27;1#x27;, #x27;2#x27;, #x27;3#x27;].map(parseInt) 映射解析
  7. linux下备份msyql数据库
  8. Activiti添加批注(comment)信息
  9. springboot 配置文件-yaml的用法
  10. java代码post接口请求 用 hutool工具类