首页 > 其他分享 >深入理解指针(3)

深入理解指针(3)

时间:2024-04-06 12:33:57浏览次数:19  
标签:变量 int char 理解 深入 数组 printf 指针

目录:
1.指针数组
2.指针数组模拟二维数组
3.字符指针变量
4.数组指针变量

1.指针数组

首先我们需要明确指针数组究竟是指针还是数组?

指针数组是存放指针的数组,我们可以类比整型数组和字符数组

如图所示
在这里插入图片描述
指针数组的每个元素都是地址,又可以指向一块区域。

2.指针数组模拟二维数组

#include <stdio.h>
int main()
{
 int arr1[] = {1,2,3,4,5};
 int arr2[] = {2,3,4,5,6};
 int arr3[] = {3,4,5,6,7};
 //数组名是数组⾸元素的地址,类型是int*的,就可以存放在parr数组中 
 int* parr[3] = {arr1, arr2, arr3};
 int i = 0;
 int j = 0;
	 for(i=0; i<3; i++)
	 {
		 for(j=0; j<5; j++)
		 {
			 printf("%d ", parr[i][j]);
		 }
		 printf("\n");
	 }
	 return 0;
}




parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型⼀维数组,parr[i][j]就是整型⼀维数
组中的元素。

图画演示如下
在这里插入图片描述

3.字符指针变量

字符指针的表达形式

int main()//代码1
{
	 char ch = 'w';
	 char *pc = &ch;
	 *pc = 'w';
	 return 0;
}



int main()//代码2
{
	 const char* pstr = "hello bit.";//这⾥是把⼀个字符串放到pstr指针变量⾥了吗? 本质只是把首元素的地址放进了字符指针里
	 printf("%s\n", pstr);
	 return 0;
}



在这里插入图片描述
由于常量字符串不能被修改,所以相当于const char* p类似于代码2

下面来看一道题目,请写出代码的运行结果

#include <stdio.h>
int main()
{
	 char str1[] = "hello bit.";
	 char str2[] = "hello bit.";
	 const char *str3 = "hello bit.";
	 const char *str4 = "hello bit.";
	 if(str1 ==str2)
	 printf("str1 and str2 are same\n");
	 else
		 printf("str1 and str2 are not same\n");
 
	 if(str3 ==str4)
		 printf("str3 and str4 are same\n");
	 else
		 printf("str3 and str4 are not same\n");
 
	 return 0;
}

在这里插入图片描述

这是由于每个字符数组的数组名代表首元素的地址,这个地址是不同的
而常量字符串是不能够被修改的,只需要保存一份

4.数组指针变量

数组指针是存放数组的指针变量

• 整形指针变量: int * pint; 存放的是整形变量的地址,能够指向整形数据的指针。
• 浮点型指针变量: float * pf; 存放浮点型变量的地址,能够指向浮点型数据的指针。
那数组指针变量应该是:存放的应该是数组的地址,能够指向数组的指针变量。

4.1数组指针变量的表达

1 int (*p) [10];
p先和 结合构成指针变量,然后指向的是大小为10的数组
注意:[ ]的优先级要⾼于
号的,所以必须加上()来保证p先和 *结合

4.2数组指针变量的初始化

1 int (*p) [10] = &arr;

在这里插入图片描述

总结

以上就是今天要分享的深入理解指针3的内容了,希望对刚刚阅读本篇博客的你有所帮助。

标签:变量,int,char,理解,深入,数组,printf,指针
From: https://blog.csdn.net/krotox/article/details/137413677

相关文章

  • [技术闲聊]我对电路设计的理解(二)-突飞猛进的第一年
            第一篇文章[技术闲聊]我对电路设计的理解(一),看着是述说着应届生如何对待一份工作,其实也是我在过往以及以目前视野看过往的事情,自己的一种态度。谦虚,是一个不可多得的词汇,因为刚起步,学习的东西很多,需要掌握的知识很多,对新人说的最多的一句话就是:第一年是学习......
  • 【C语言初阶】指针运算
    【C语言初阶】指针运算文章目录【C语言初阶】指针运算四、指针运算1介绍2指针+-整数2.1示例3指针-指针3.1示例3.2模拟实现`strlen()`3.2.1方法一:指针-指针3.2.2方法二:计数器3.2.3方法三:函数递归4指针的关系运算4.1示例14.2示例24.3标准规定总......
  • 【C语言初阶】指针
    【C语言初阶】指针文章目录【C语言初阶】指针一、指针是什么?1指针是什么?2内存2指针变量2.1示例2.2总结3如何编址?3.1编址3.1总结二、指针和指针类型1指针的类型1.1示例2指针+-整数2.1示例2.2总结3指针的解引用3.1示例3.2总结总结:本章目标:......
  • axios的理解和使用
    axios中文文档 https://www.axios-http.cn/docs/intro是什么前端最流行的ajax请求库react/vue官方都推荐使用axios发ajax请求 特点基本promise的异步ajax请求库浏览器端/node端都可以使用支持请求/响应拦截器支持请求取消请求/响应数据转换批量发送多个请求常用语法......
  • 深入探索WebKitGTK+:打造浏览器界面的核心利器
            导语:今天我要向大家介绍WebKitGTK+,这个强大的开源组件负责与操作系统交互,显示网页内容,并提供GUI界面、菜单、工具栏等组件。无论你是前端开发者还是UI设计师,这篇文章都将为你提供一个全面、实用的指南。让我们一起揭开WebKitGTK+的神秘面纱吧!       ......
  • 《C++程序设计》阅读笔记【4-指针(2)】
    ......
  • 为何在RF设计中理解波反射非常重要
    在低频下工作的普通电路与针对RF频率设计的电路之间的关键区别在于它们的电气尺寸。RF设计可采用多种波长的尺寸,导致电压和电流的大小和相位随元件的物理尺寸而变化。这为RF电路的设计和分析提供了一些基础的核心原理特性。基本概念和术语假设以任意负载端接传输线路(例如同......
  • 深入理解Java异常处理机制(day20)
    异常处理异常处理是程序运行过程产生的异常情况进行恰当的处理技术在计算机编程里面,异常的情况比所我们所想的异常情况还要多。Java里面有两种异常处理方式;1.利用try···catch···finaly语句处理异常,优点是分开了处理异常代码和程序正常代码,增强了程序的可读性,减少......
  • K8s 守护进程之 DaemonSet:深入解析
    ......
  • c语言之多重指针
    多重指针是定义了一个指针a后,又定义一个指针b引用指针a的地址,就叫多重指针多重指针定义的方法:类型名**指针名#include<stdio.h>intmain(){ inta; a=3; int*p=&a; int**y=&p; printf("%d\n",a); printf("%d\n",*p); printf("%d\n",**y); return0;}上面代码......