c语言字符二维数组指针赋值,C语言之二维数组与指针
二维数组:
char a[2][3];
二维数组实质上也就是一维数组,a[2][3]可看做一个2个元素的一维数组,这2个元素又是另一个数组,在内存中,它的排布如下:
#include "stdio.h"
int main(int argc, char *argv[])
{char a[2][3]={{1,3,9},{2,4,8}};for(int i=0; i<2;i++)for(int j=0;j <3;j++)
{
printf("a[%d][%d]=%d\n", i, j, a[i][j]);
}for(int i=0; i<2;i++)for(int j=0;j <3;j++)
{
printf("a[%d][%d] Addr=0X%X\n", i, j, (int)&a[i][j]);
}return 0;
}
数组指针:
char a[2][3]={{1,3,9},{2,4,8}};char (*p)[3]=a; //a为一维数组的数组名,类型为char (*)[3]
char *p=a[1]; //a[1]为二维数组的数组名,即{2,4,8}数组的首地址,类型为char *
char (*)p[2][3]=&a //&a为整个数组的首地址,类型为char (*)[2][3]
二维数组传参:
当定义了char a[2][3]={{1,3,9},{2,4,8}},如何将地址传入到函数中呢。函数对a数组进行修改呢。
void Func(int (*array)[10]); 注意*array需要用括号括起来。
这种形式的传参是1个指针,指向10个元素的数组,因为[]的优先级比*的优先级高,故*array必须用括号括起来。
#include "stdio.h"
void exchange(char (*p)[3]);int main(int argc, char *argv[])
{char a[2][3]={{1,3,9},{2,4,8}};for(int i=0; i<2;i++)for(int j=0;j <3;j++)
{
printf("a[%d][%d]=%d\n", i, j, a[i][j]);
}
printf("exchange\n");
exchange(&a[1]);for(int i=0; i<2;i++)for(int j=0;j <3;j++)
{
printf("a[%d][%d]=%d\n", i, j, a[i][j]);
}return 0;
}void exchange(char (*p)[3])
{char tmp=(*p)[0];
(*p)[0] = (*p)[2];
(*p)[2] =tmp;
}
例子解析:exchange(&a[1])将{2,4,8}数组的首地址传递给exchange,exchange使用(*p)获得{2,4,8}的地址,然后用(*p)[0]、(*p)[1]、(*p)[2]偏移并修改{2,4,8}数组的值。
void Func(int *array[10]);
这种形式的传参是10元素的数组,每个元素都是指向int型的指针。
#include "stdio.h"
void exchange(char *p[2]);int main(int argc, char *argv[])
{char a[2][3]={{1,3,9},{2,4,8}};for(int i=0; i<2;i++)for(int j=0;j <3;j++)
{
printf("a[%d][%d]=%d\n", i, j, a[i][j]);
}
printf("exchange\n");char *p[2];
p[0] = a[0];
p[1] = a[1];
exchange(p);for(int i=0; i<2;i++)for(int j=0;j <3;j++)
{
printf("a[%d][%d]=%d\n", i, j, a[i][j]);
}return 0;
}void exchange(char *p[2])
{char tmp=p[1][0];
p[1][0] = p[1][2];
p[1][2] =tmp;
}
例子解析:先使用char *p[2]定义了2个元素的数组,每个元素都是char *型,然后将a[0]和a[1]的地址赋给p[0]和p[1],exchange函数接收到p[2]的地址,使用p[1]就能得到a[1]的地址,然后使用p[1][0]、p[1][1]、p[1][2]偏移到a[1][0]、a[1][1]、a[1][2]。
c语言字符二维数组指针赋值,C语言之二维数组与指针相关推荐
- c语言数组赋值可以用scanf吗,二维数组怎么赋值 用scanf给二维数组赋值
不知道行数列数的情况下,给一个二维数组赋值...... c语言二维数组的赋值: 例1: inta[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90}, ...
- c语言字符串二维数组如何赋值,C语言二维数组字符串的赋值
今天用到了二维数组作为参数传递的程序,通过网上搜索,针对自己遇到的问题做个整理. 1.在被调用函数的形参数组定义可以省略第一维的大小,第二维不可省略,如下: void fun(int a[5][20] ...
- c语言字符-1代表什么,玩儿转C语言:符号和字符(1)
编译原理中讲到程序构造的一般过程是:词法分析.语法分析.语义分析.中间代码生成.代码优化和目标代码生成.词法分析对应的就是C语言中的"单词"(也称"符号"),指 ...
- c语言字符蛇代码,贪吃蛇游戏c语言源贪吃蛇代码代码学习
1########蛇的状态,U:上:D:下:L:左R:右蛇身的一个节点12{ 13intx; 14inty; 15structSNAKE*next; 16}snake; 1718//全局变量// 19 ...
- R语言编程 第一讲 变量与赋值
R语言编程 第一讲 变量与赋值 R语言的变量名 赋值符号 <- 与 = 的区别 赋值符号 <- 的更多细节 Copy-on-Modify与Modify-in-Place 函数调用 列表 数 ...
- VBA 不能给数组赋值,其实只是不能给静态数组整体赋值
1 问题:VBA报错:不能给数组赋值! 其实并不是 所有数组不能赋值 其实是不能给静态数组,整体赋值! 只是因为当前处理的是一个静态数组 2 什么是静态数组 (只是大小静态!! 赋值可变!) 2.1 ...
- c语言乘积imnl,2017年计算机二级C语言考前必做试题及答案2
(21)有以下程序: 程序运行后的输出结果是( ). A.852 B.963 C.741 D.875421 (22)有以下程序: 程序运行后的输出结果是( ). A.let=4 B.m=2 C.m=6 ...
- 【MATLAB】数据类型 ( 元胞数组 | 单位阵 | 幻方 | 结构体 | 元胞数组值获取 )
文章目录 一.元胞数组 1.定义元胞数组 2.生成单位阵 3.生成幻方 4.元胞数组元素赋值 5.元胞数组元素赋值 二 二.元胞数组 1.定义结构体 2.小括号获取元胞数组子数组 3.大括号获取元胞数 ...
- c语言——用二维数组名对二级指针赋值
用二维数组名对二级指针进行赋值后,二级指针的指针运算操作是与二维数组的指针运算有区别的.通过下面的例子你将了解到二维数组与二级指针进行指针运算的本质区别. char array[3][4]={&quo ...
- C语言试题四十七之程序定义了N×M的二维数组,并在主函数中自动赋值。请编写函数function(int a[N][M], int m),该函数的功能是:将数组右上半三角元素中的值乘以m。
1. 题目 程序定义了N×M的二维数组,并在主函数中自动赋值.请编写函数function(int a[N][M], int m),该函数的功能是:将数组右上半三角元素中的值乘以m. 2 .温馨提示 C ...
最新文章
- ldconfig动态链接库管理以及修改ld.so.conf.d
- 利用python 提取log 文件里的关键句子,并进行统计分析
- Dropping Balls UVA - 679(二叉树的遍历)
- k8s service type_通过搭建MySQL掌握k8s(Kubernetes)重要概念(上):网络与持久卷...
- 【仿某公司前台】 asp安全查询系统
- Struts2(接受表单参数)请求数据自动封装和数据类型转换
- 山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(二)
- Winrar 5.60 beta 4 个性破解注册码(2018.5.22)
- Netflix云原生微服务设计分析
- 周未特别节目《前赤壁赋》
- 如何利用 Python 批量合并 Excel?
- OpenCV打开摄像头截图
- HTTP首部字段脑图
- 【转】VMware15虚拟机安装教程
- matlab中仿真中接地,基于Matlab的配电网接地故障仿真
- java word 颜色设置_如何在Java中为word文档(.doc或.docx)设置背景颜色(页面颜色)?...
- Linux查看磁盘存储空间大小
- 不容错过的精美的树形表格treegrid在项目里面使用总结
- Chrome浏览器 v71.0.3578.99
- 大型Solidworks装配设计与仿真工作站配置方案
热门文章
- html修改全局字体,最好CSS全局字体写法
- winpe安装win7教程
- 安卓软件汉化教程附带汉化工具Android Res Edit V1.5
- 大米产品体验师活动火热进行!感谢客户最真实的心声
- excel 图表 保持矢量图格式 粘贴进word
- 启发式搜索A * 算法
- kali安装百度网盘客户端
- xp系统一直跳出宽带连接服务器,xp系统一直显示正在获取网络地址的操作方案...
- 【ajax】6.IE缓存问题解决
- 东芝计算机配置,东芝Toshiba笔记本电脑开机进入BIOS的方法与bios设置参数介绍(ESC+F1)...