【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个空间的数组里面存放 ...
随机推荐
- .net 多线程临时变量
结果 : 5 5 5 5 5 结果:0 1 2 3 4
- 2018/12/20 20:52:42 螺纹钢PTA豆粕
如期向上,但是一点办法没有:没有好的入场位,不做不算错,面对诱惑不动如山也是一种修养,今晚看M5有没有3买,有的话可以看情况考虑要不要进场 PTA M30向下一笔过程中,等待M30当前一笔下跌结束,可 ...
- 利用CNN神经网络实现手写数字mnist分类
题目: 1)In the first step, apply the Convolution Neural Network method to perform the training on one ...
- homestead安装
所谓Homestead,其实就是一个虚拟机镜像. 为什么用它?它的优点可以去自行百度.(虽然我还是用了集成环境 xampp,但是我还是不推荐的,特别是统一开发环境.或者去使用诸如Laravel的框架, ...
- spark2.1源码分析3:spark-rpc如何实现将netty的Channel隐藏在inbox中
class TransportServer bootstrap.childHandler(new ChannelInitializer<SocketChannel>() { @Overri ...
- linux ubuntu生成pac文件,实现代理
sudo pip install genpac sudo pip install --upgrade genpac sudo genpac --proxy="SOCKS5 127.0.0.1 ...
- 在局域网中搭建自己的gis服务器
在局域网中搭建自己的gis服务器 需求 在客户的B/S应用系统中使用电子地图.该系统只可运行于内部网中. 分析 由于系统中的电子地图只能运行于局域网中所以不能采用googl ...
- row_number() over (partition by order by)的用法
原表为: 一.分区函数Partition By的与row_number()的用法 1.不分班按学生成绩排名 select *,row_number() over(order by Score desc ...
- Java高级框架------Spring(二)
五.如何给Bean的属性赋值(注入) 1. 通过构造方法来赋值 2. 设置注入(通过set方法) 2.1 如果属性是基本类型或String等简单 <bean id="peo" ...
- 编译pcre 报错 error: Invalid C++ compiler or C++ compiler flags
安装c++ 编译器:yum -y install gcc-c++ ,再次编译通过.