什么是指针?为什么要用指针?
1、什么是指针?
在C语言中,访问变量的方式有两种:
1、通过变量名访问(例如说去什么花店,以花店的名称找到对应的花店)
2、通过地址访问(通过花店的地址,导航过去)
地址是什么呢?
就是花店具体的路径xxxx路xxx号,在C语言中用指针来表示(0x12345678)
所以说 指针=地址
在C语言中整型变量存放的是整数
字符变量存放的是字符
那么指针变量存放的就是地址
那么指针变量就可以说是存放指针的变量也可以说是存放地址的变量
2、为什么要用指针?
看下面一段代码
#include <stdio.h>
void _swap(int a, int b)
{int temp=a;a=b;b=temp;
}
int main(void)
{int a=5,b=10;_swap(a,b);printf("a=%d b=%d",a,b);return 0;
}
在这一段代码运行下来发现,输出的结果a还是等于5,b还是等于10,他们的值并没有交换.
这是为什么呢?
从内存的方面分析,main函数的a,b存放在一个地址空间上,而函数中的a和b又是另外一个空间的a,b,并不是main函数中的a,b的地址,只是把他们的值传递过来了,最后进行交换,但是main函数中的a,b并没有发生变化。
那要交换他们的值就必须用到指针,把他们的地址传递进去就可以经行交换了。
#include <stdio.h>
void _swap(int *a,int *b)
{int temp=*a;*a=*b;*b=temp;
}
int main()
{int a=5,b=10;_swap(&a,&b);printf("a=%d b=%d\n",a,b);return 0;
}
在这段代码里a,b的值就发生了改变,应为我们对a和b,的地址进从了操作,从而改变了他们的值。
什么是指针?为什么要用指针?相关推荐
- C++ 笔记(27)— 指针变量、数组和指针、指针数组、数组指针、指针常量与常量指针
1. 什么是指针变量? 指针变量是专门有一个变量来存放指针. int main(int argc, char *argv[]) {int a = 10;int *p = &a; //通过取地址 ...
- 关于C语言中的数组指针、指针数组以及二级指针
概念解释 数组指针:首先它是一个指针,它指向一个数组,即指向数组的指针:在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.数组指针指向的是数组中的一个具体元素,而不是整个数组,所 ...
- C++ 笔记(18)— 类和对象(this 指针、指向类的指针、类静态成员变量和函数)
1. this 指针 在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址. this 指针是所有成员函数的隐含参数.因此,在成员函数内部,它可以用来指向调用对象. 友元函数没有 thi ...
- C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)
1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...
- Go 学习笔记(13)— 指针定义、指针特点、空指针、指针数组、指向指针的指针、指针作为函数入参
1. 复合数据类型 Go 语言基本的复合数据类型有指针.数组.切片.字典.通道.结构和接口等.格式如下: * pointerType // 指针类型, [n]elementType // 数组类型, ...
- C指针8:二级指针(意思就是指向指针的指针)
指针可以指向一份普通类型的数据,例如 int.double.char 等,以下简称一级指针: 也可以指向一份指针类型的数据,例如 int *.double *.char * 等.以下简称二级指针:即如 ...
- C指针4:数组指针(指向数组的指针)
先明确两个概念:(1和2是两个完全不一样的东西) 1.数组指针:如果一个指针指向了数组(该数组就是普通定义的数组),我们就称它为数组指针(Array Pointer).(1强调的是指针) 2.指针数组 ...
- go 方法接受者 是指针类型和非指针类型的 区别
go 方法接受者 是指针类型和非指针类型的 区别 非指针类型 package mainimport "fmt"// 定义接口 type Car interface {GetName ...
- C++成员变量指针和成员函数指针【The semantics of funcitons】
原文:https://blog.csdn.net/laojiu_/article/details/68946915 (原文有笔误) 1. #include <cstdio> #includ ...
- 弄清指针-如何深入了解指针
弄懂这些指针基础知识,再遇C指针咱就不慌了 一.前言 二.变量与指针的本质 三.指针的几个相关概念 四.指向不同数据类型的指针 五.总结 一.前言 如果问C语言中最重要.威力最大的概念是什么,答案必将 ...
最新文章
- 智源论坛Live丨青年科学家线上报告会日程发布
- Spring AOP通知实例 – Advice
- RestTemplate 发送 Https 请求调用
- android 知识体系
- 一张图看懂UML 类图
- Oracle压缩总结2— 估计表压缩效应
- 在.net平台下,执行命令行
- 干什么事都要有风险和提早意识
- iptables 简介
- 内录音频(Windows系统)
- Win10一键修复所有dll缺失的方法
- acne scar treatment options
- Windows 10 (64位)下 VMware 15虚拟机下载及安装教程(内附安装包)
- 学习云客户端安装流程
- 大唐之路(4)一号店入驻要求
- mysql水果表查询_最全MySQL数据库表的查询操作
- 教师计算机考试模块有哪些内容有哪些内容,教师资格考试信息与信息技术模块知识点...
- ios让您的today变得更加有节奏,新出品Today:日历、提醒、习惯养成、倒计时
- 数据结构——有序链表的合并,链表实现一元多项式相加
- Cisco AnyConnect Secure Mobility Client 4.10.04065 (macOS, Linux, Windows) 下载