Linux学习-指针与数组

目录

数组和指针的关系

数组指针:

数组和指针的关系代码

指针数组

指针和二维数组的关系

数组传参


数组和指针的关系

一维数组和指针的关系: int a5 = {1,43,5,3,2,};

数组的数组名a是指向数组第一个元素a0的指针常量;

a == &a0;

a的地址可以理解为int *类型: 有两种情况除外:

1,sizeof运算时

2,&运算时,是值不变类型升级为

数组指针

&int * == int **

& int a\[\] == int (*a)\[\]

对数组指针取*,值不变,类型降级成为指向数组第一个元素的指针。

访问下标为n的数组元素的方式:an == *(a+n) == pn

pn就是p+n再取*

int a5就是开辟20个字节连续的空间,地址是0x2000 类型就是int *

**一维数组的传参:**数组传参 int a5 = {1,43,5,3,2,};

int fun(int *a,int len);

**字符串传参:**char a32 = {"hello world"};

和一维数组传参相似

数组指针:

int *a5 = {NULL};*和int连用,是5个元素每个元素是int *型类型。

定义一个数组,数组占四十个字节,每个元素为int *型,共五个指针。

int (*a)5 = NULL;

定义一个指针变量,占八个字节空间,指针指向了一个int类型五个元素的数组,将来+1就会偏移20个字节

数组和指针的关系代码

"sadfghj",一串字符串常量默认类型是char *型

用%p打印上述字符串,打印出来的是上述字符串内存的首地址

字符串常量不能改变值,要不然会崩掉

bash 复制代码
char str[10] = {"dfg"};
char *pstr = "sdf";
*str = 'S';
//是可以的,因为dfg存在str数组指针中中
*pstr = 'S';
//是不可以的的因为sdf只是将这传字符串的首地址存在pstr指针中,
*pstr不可以直接改变'sdf'常量会崩溃。

指针数组

int (*a)\[\];

char *a5

bash 复制代码
char *a[5] = {"sddsaf","sdf","ds","ad","fd"};
//相当于是定义了五个数组指针,存了这五个字符串的
首地址,这五个字符串也是常量不能更改内容。


打印:
printf("%s",s[i]);

指针数组主要是用来操作字符串数组,通过将指针数组的每个元素存放字符串的首地址实现多个字符串的操作

二维数组主要用来存放字符串数组,每行存储一个字符串,多行存储多个字符串所组成的数组。

指针和二维数组的关系

bash 复制代码
int a [2][3] = {0};

int *p = NULL;
int (*q)[3] = NULL;

p = &a[0][0];
p = a[0];
p = *a;

q = a;


//二维数组的数组名是指向第一行元素的数组指针
    a+1是直接加一整列的数据内存大小
//访问二维数组第m行第n列的方式
    a[m][n];
    *(a[m]+n);
    *(*(a+m)+n);
    *(p+m*N+n);
    *(*(a+m)+n);
    *(q[m]+n);
    q[m][n];

数组传参

bash 复制代码
int outputarray(int (*p)[3],int len)

int [2][3];

outputarray(a,2);
//数组传参只需要穿数组指针类型和数组行数即可
相关推荐
茯苓gao5 小时前
嵌入式开发笔记:Qt信号槽机制深度解析——从原理到实战的全方位指南
开发语言·笔记·嵌入式硬件·qt·学习
QXWZ_IA6 小时前
桥梁数字孪生怎么落地?
人工智能·科技·算法·智能硬件·政务
Kel6 小时前
输出层与反分词(Output Layer & Detokenization)
人工智能·算法·架构
陕西企来客6 小时前
2026年7月技术好GEO优化方案:算法适配与内容策略
人工智能·算法·机器学习·技术好geo优化
我想我不够好。6 小时前
监控学习 7.23 1.5hour
学习
风栖柳白杨6 小时前
【面试】AI算法工程师_空白自测版本
人工智能·算法·面试
闪电悠米8 小时前
力扣hot100-73.矩阵置零-标记数组详解
算法·leetcode·矩阵
栋***t8 小时前
从“纸质试卷”到“AI智能组卷”,麦塔在线考试系统如何重构出题逻辑?
java·大数据·人工智能·算法·重构
wabs6668 小时前
关于图论【卡码网100.最大岛屿的面积的思考】
数据结构·算法·图论
CHANG_THE_WORLD8 小时前
深入理解递归:从函数调用到调用栈的完整执行过程
java·开发语言·算法