【c】多级指针
一.一级指针
1.int *p,*p2;
p是变量名,*表明是指针,指针指向地址。
在定义时初始化,如int *p_2 = &b; //定义一个指针,指针指向一个地址
先定义再初始化,如int *p1; p1 = &a;//定义了一个指针,用这个变量名去赋值
*p1是p1所指向的变量的值
为a赋值
#include <stdio.h>
int m = ;
void usepo(int *a){
*a=;//输出a=2
*a =m;//输出a=3
a=&m;//输出a=0 ? }
int main(){
int a;
usepo(&a);
printf("%d",a);
}
用指针交换两个数的值
void swap(int *xx,int *yy){
int *temp;
temp=xx;
xx=yy;
yy=temp;
}/*主函数中用swap(&x,&y)调用*/ 失败,因为虽然参数是指针,但是作为参数的指针是临时复制的,在函数里互换操作的是临时指针而不是指针指向的内容 只是在子函数里创建了两个数的副本,仍没有改变源数。
void swap(int xx,int yy){
int temp;
temp=xx;
xx=yy;
yy=temp;
}/*主函数中用swap(x,y)调用*/
和这种调用本质一样
成功改变数的值
void swap(int *xx,int *yy)
{
int temp;
temp=*xx;
*xx=*yy;
*yy=temp;
}
2.与数组相关
#include <stdio.h>
void usepo(int *a){
for(int i=;i<;i++){
a[i]=i; //或*(a+i)=i;
} }
int main(){
int a[];
//a=&a[0](数组首地址),&a=int (*)[10](数组地址)
usepo(a);
for(int i=;i<;i++)
printf("%d ",a[i]);
} //正常输出0 1 2 3 4 5 6 7 8 9
一个错误的示范
用指针创建动态数组,需要分配空间。
一维数组
int *p;
p = (int*)malloc(m*(sizeof(int)));//动态申请内存
二维数组
int **p;
p = (int**)malloc(m*(sizeof(int*)));//二级指针所在地址申请内存
int i, j; for (i = ; i<m; i++)
p[i] = (int*)malloc(sizeof(int)*n);//一级指针所在地址申请内存
用三级指针传递二维数组指针地址创建二维动态数组(迷宫问题)
int **maze=NULL;
initMAZE(&maze);
void initMAZE(int ***maze){
srand(time(NULL));
int i,j;
int x,y;//读入x,y
int **typeM;
scanf("%d %d",&x,&y);
//为二级模板数组申请空间
typeM = (int **)malloc(sizeof(int*)*(x+));
for (int r=;r<=x+;r++)
typeM[r]=(int *)malloc(sizeof(int)*(y+));
//迷宫赋值
for (i = ; i<=x; i++)
{
for (j = ;j<=y;j++){
typeM[i][j]=(int)rand()%;
} } for (i = ; i <=x; i++){
typeM[i][]=;
typeM[i][x]=; }
for (j = ;j<=y;j++){
typeM[][j]=;
typeM[x][j]=; }
//保证入口出口是可走的
typeM[][]=;
typeM[x-][x-]=;
*maze = typeM; }
【c】多级指针的更多相关文章
- 图解c/c++多级指针与“多维”数组
声明:本文为原创博文,如有转载,请注明出处.若本文有编辑错误.概念错误或者逻辑错误,请予以指正,谢谢. 指针与数组是C/C++编程中非常重要的元素,同时也是较难以理解的.其中,多级指针与“多维”数组更 ...
- C++多级指针与多维数组详细介绍
多级指针的概念 多级指针可对应于多维数组,这种指针变量中存的是另一个指针变量的地址,其说明如下: int val=10; int *ptr=&val; int **pptr= ...
- C语言 详解多级指针与指针类型的关系
//V推论①:指针变量的步长只与‘指针变量的值’的类型有关(指针的值的类型 == 指针指向数据的类型) //指针类型跟指针的值有关,指针是占据4个字节大小的内存空间,但是指针的类型却是各不相同的 // ...
- 数据结构-多级指针单链表(C语言)
偶尔看到大一时候写了一个多级链表,听起来好有趣,稍微整理一下. 稍微注意一下两点: 1.指针是一个地址,他自己也是有一个地址.一级指针(带一个*号)表示一级地址,他自身地址为二级地址.二级指针(带两个 ...
- c/c++多级指针
c/c++多级指针 如图: # include <stdio.h> int main(void) { ; int * p = &i; //p只能存放int类型变量的地址 int * ...
- [转] C语言多维数组与多级指针
http://c.biancheng.net/cpp/html/477.html 多维数组与多级指针也是初学者感觉迷糊的一个地方.超过二维的数组和超过二级的指针其实并不多用.如果能弄明白二维数组与二级 ...
- Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型
Android For JNI(五)--C语言多级指针,结构体,联合体,枚举,自定义类型 我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了 一.多级指针 指针的概念我们在前面 ...
- [C++]指针与多级指针(图解)
声明:如需引用或者摘抄本博文源码或者其文章的,请在显著处注明,来源于本博文/作者,以示尊重劳动成果,助力开源精神.也欢迎大家一起探讨,交流,以共同进步- 0.0 演示: /* @author:John ...
- C 多级指针
C多级指针 *p -----> &p1 *(*p) ----->*(&p1) = &p ...
- C语言数组篇(五)多级指针和二维数组指针的区别
多级指针 以二级指针为例 二级指针的由来是 指针数组 的指针形式. int *p[10] 读取的顺序是 p[] --> 10个空间的数组 * p[] --> 这10个空间的数组里面存放 ...
随机推荐
- C#调用VisionPro工程文件
添加一个按钮与控件,双击按钮,在程序中写下一下代码, CogJobManager mymanger = (CogJobManager)CogSerializer.LoadObjectFromFile( ...
- asp.net mvc5中使用Swagger 自动生成WebApi文档笔记
Swagger可以自动生成Api说明文档,并内置在线测试,通过NSwagStudio还可以自动生成Api客户端调用代码,以下为具体实现步骤 1.写一个简单的WebApi并加上注释 public cla ...
- send_keys results in Expected 【object Undefined】undefined to be a string解决方法:更新selenium+geckodriver+firefox
很久之前在win10上配置的测试环境: python 3.6.1+ selenium 3.3.3+ geckodriver 0.15.0以前run case是正常的,今天去run 同样的case时发现 ...
- 学习MeteoInfo二次开发教程(十一)
1.新添加状态栏ToolStrip,可能名称为toolStripStatusLabel2 这时需要把TSSL_Coord改为toolStripStatusLabel2 2.SetMapView();语 ...
- python,运算符,基本数据类型
a = 'py' in 'python' b = 'py' not in 'python' print(a)print(b) in :判断一个前面一个字符串中的字符是否完整的出现在后面的字符串中,如果 ...
- sqlserver2016新功能
SQL Server 2016中的新功能(数据库引擎) 2017年1月13日 23分钟阅读时长 作者 本人建了个领优惠卷购物群,平时网购可以省点钱.有需要的加群:511169656交流,谢谢 本主题 ...
- 解决用try except 捕获assert函数产生的AssertionError异常时,导致断言失败的用例在测试报告中通过的问题
在使用Python3做自动化测试过程中可能会遇到,assert函数不加try except,就可以正常在报告里体现用例不通过,加上变成通过. 这是因为在使用try except 时,捕获了asser ...
- 使用Autoencoder进行降维
#coding=utf-8import tensorflow as tf import matplotlib.pyplot as plt from tensorflow.examples.tutori ...
- vue项目中icon图标的完美引入
第一步: 进入阿里矢量图标库并登录 地址:https://www.iconfont.cn 第二步: 选择项目需要的图标添加到库 第三步: 选完之后点击右上角的购物车,打开后点击添加到项目,没有就自己建 ...
- 分布式一致性算法2PC和3PC
为了解决分布式一致性问题,产生了不少经典的分布式一致性算法,本文将介绍其中的2PC和3PC.2PC即Two-Phase Commit,译为二阶段提交协议.3PC即Three-Phase Commit, ...