网站首页 > 文章精选 正文
用指针访问一维数组
数组里面所有的元素是连续的内存存放的,数组名是数组第一个字节的内存地址,并且数组名a也表示指针,在表达式可以被转换为和 p 等价的指针!a作为右值 并不表示a地址存储的内容, 而是数组首元素首地址
指针进行加法(减法)运算时,它前进(后退)的步长与它指向的数据类型有关。p指向的数据类型是int ,在内存中占4个字节(Byte) ,p+1表示前进4个字节。
用指针访问二维数组
先看看常见指针变量的定义:
int a[2][3] = { { 2,3,6 },{ 4,5,8 }};
int(*p)[3] = a;//数组指针,指向一维数组的指针,
printf("a=%p &a[0]=%p\n", a, &a[0]);//400
printf("*a=%p a[0]=%p &a[0][0]=%p\n", *a, a[0],&a[0][0]);//400 一维数组首元素的首地址
//使用整个数组的数据没有实际的含义,编译器遇到这种情况都会转换为指向该一维数组第 0 个元素的指针
printf("(a+1)=%p &a[1]=%p\n", a + 1, &a[1]);//412
printf("*(a+1)=%p a[1]=%p &a[1][0]=%p\n",*(a + 1), a[1], &a[1][0]);//
printf("*(a+1)+2=%p a[1]+2 = %p &a[1][2]=%p\n",*(a + 1) + 2,a[1] + 2,&a[1][2]);//420
printf("*(*a+1)=%d *(a[0]+1)=%d a[0][1]=%d", *(*a + 1), *(a[0] + 1),a[0][1]);//3
指针进行加法(减法)运算时,它前进(后退)的步长与它指向的数据类型有关
p的数据类型为int (*) [3],一维数组a[0]有3个整型数据就是12个字节,a+1 = 412
a[0]的数据类型为int *
一个小练习:打印出字符串指针数组中每一个字符
指针法:字符串相当于一个一位数组
#include<stdio.h>
int main()
{
char * array[5] = { "array","11","kankanshisha","pointer","c program" };
char * (*p) = array;//指向数组元素(char指针类型)的首地址的指针
for (int i = 0; i < 5; i++)
{
for (int j = 0; '\0' != *(*(p + i) + j); j++)
{
printf("%c", *(*(p + i) + j));
}
printf("\n");
}
return 0;
}
数组下标法:
#include<stdio.h>
int main()
{
char * array[5] = { "array","11","kankanshisha","pointer","c program" };
char * (*p)[5] = &array;//指向数组首地址的指针 (*p)===数组名字array
for (int i = 0; i < 5; i++)
{
for (int j = 0; (*p)[i][j]!='\0'; j++)
{
printf("%c", (*p)[i][j]);
}
printf("\n");
}
return 0;
}
猜你喜欢
- 2025-05-16 Java 里的基本类型和引用类型
- 2025-05-16 新手小白学Java|零基础入门笔记|原来学Java可以这么简单
- 2025-05-16 深度学习CV方向高频算法面试题6道|含解析
- 2025-05-16 C语言结构体成员变量名后加冒号和数字的含义
- 2025-05-16 C语言之核心语法
- 2025-05-16 CSP初赛冲刺 计算机体系基本结构
- 2025-05-16 Go语言基础—整型
- 2025-05-16 java基本数据类型
- 2025-05-16 深入探索C语言数据类型:整型、浮点型、字符型全解析!
- 2025-05-16 mysql索引
- 05-16一文学完《图解HTTP》
- 05-16您未被授权查看该页
- 05-16快码住!带你十分钟搞懂HTTP与HTTPS协议及请求的区别
- 05-16一张图带你了解HTTP 9个请求方法,收藏!
- 05-16Java 里的基本类型和引用类型
- 05-16新手小白学Java|零基础入门笔记|原来学Java可以这么简单
- 05-16深度学习CV方向高频算法面试题6道|含解析
- 05-16C语言结构体成员变量名后加冒号和数字的含义
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)