指针数组,字符串通过读取地址输出

(53条消息) 用首地址可以输出字符串的解释_字符串首地址_xumengfan的博客-CSDN博客https://blog.csdn.net/xumengfan/article/details/78148317

#include<stdio.h>

int main() {

	const char* p1[5] = { "please","tell","me","the","story" };
	int i;
	for (int i = 0; i < 5; i++) {
		printf("%s\n", p1[i]);
	}

}

数组里的每个元素都是char*类型,读取字符串则根据其地址读取,p1[i]则对应的是存储地址,不可通过指针解引用获取。

二维数组和指针

 同一维数组和指针一样,二维数组和指针也有相同的对应关系

*(array+i)+j表示第 i 行第 j个元素的地址?

当*(array+i)单独使用时表示的是第 i行数据,放在表达式中会被转换为第 i行数据的首地址,也就是第 i 行第 0 个元素的地址,因为使用整行数据没有实际的含义,编译器遇到这种情况都会转换为指向该行第 0 个元素的指针;

#include <stdio.h>
int main()
{
	int array[2][3] = { {1,2,3},{4,5,6} };
		int(*p)[3] = array;

	// **(p+1)=array[1][0]=4

	printf("**(p+1)=%d\n", **(p + 1));
	printf("**(array+1)=%d\n", **(array + 1));

	 //*(*(p+1)+2)=array[1][2]=6
	printf("*(*(p+1)+2)=%d\n", *(*(p + 1) + 2));
	printf("*(*(array+1)+2)=%d\n", *(*(array + 1) + 2));
	printf("array[1][2]=%d", array[1][2]);
}

验证结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值