黑马程序员__指针

指针

定义

指针是一种数据类型,可以定义一个变量,称为指针变量。指正变量表示的是其他某个变量的地址,也就是说,指针是用来储存地址的,而指针本身也是有自己的地址,指针变量所占的储存空间为8个字节。

为什么要用到指针呢?打个比方,在KTV有很多包房,每个包房都有房间号,变量就像服务员,如果定义变量对每个包房进行服务,显然要很多的变量(服务员),这时候就可以定义一个指针变量,根据每个包房的房间号,以及不同类型的包房进行服务,这样可以大大的降低内存的消耗,在变量的管理和代码的精简度都有很大的提高

格式

变量类型 *变量名 比如:
char *c
int *p

*p = 20 *的作用是访问变量p指向的储存空间

指针和数组

数组就是由多个相同类型的数据组成的,定义一个数组 int ages[5] = {1,2,3,4,5}
数组在内存中用首元素可以表示数组的地址,如果定义一个指针变量p,int *p;
那么,p = ages ,表示指针p指向了数组ages,也就是指向了数组首元素的地址,所以也可以这样表示 p = &ages[0]

指针与字符串

通常情况下可以用指针来定义一个字符串

char *p = “love”
p就可以来表示一个字符串常量,随时调用,一般用在很少修改这个字符串且要经常调用这个字符串的情况下
但是,如果要修改这个字符串,显然用指针的话会很不方便,这时候就可以用数组来定义一个字符串:
char p[] = “love”;

指针和函数

如果要快速调用一个函数,我们就可以定义一个指向函数的指针
int *p (int,int) ,p就是函数名,前面的int时函数返回的数据类型,括号里面的两个int是函数要传入的参数,
int c = p(10,10),这样就调用了一个函数。

有的人都说用指针调用函数,就像方法的封装,类似于面向对象的感觉,反正我现在时真的体会不到,个人觉得直接用函数名来调用也是挺方便的,而且还容易理解。

现在对指针的理解还不怎么深刻,用起来也不是那么畅快,没有传说中的那么强大,希望自己还是要多积累经验

时间: 2024-10-08 08:19:33

黑马程序员__指针的相关文章

【黑马程序员】————指针

一.指针变量的定义 1. 格式:变量类型 *指针变量名;2. 举例:int *p; char *p2;3. 注意:定义变量时的*仅仅是指针变量的象征 4.指针变量只能存储地址 5.指针就一个作用:能够根据一个地址值,访问对应的存储空间6.指针变量p前面的int:指针变量p只能指向int类型的数据 7.任何指针都占用8个字节的存储空间 二.利用指针变量简单修改其他变量的值 1.指向某个变量 int a; int *p;p = &a;或者int *p = &a; 2.修改所指向变量的值*p =

黑马程序员__多线程

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1.线程是程序执行的一条路径, 一个进程中可以包含多条线程,多线程并发执行可以提高程序的效率, 可以同时完成多项工作. 2.开启新线程的两种方式 1).继承Thread [java] view plaincopy public stati

黑马程序员__集合框架总结

------Java培训期待与您交流! ------- 前言: 本文是对Java集合框架做了一个概括性的解说,目的是对Java集合框架体系有个总体认识,如果你想学习具体的接口和类的使用方法,请参看Java API文档. 一.概述 数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作的方法. 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口

黑马程序员__反射

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- <反射> 1.Class .class文件加载到内存中就是一个Class对象 获取Class对象的方式有3种: Class.forName(); 类名.class 对象.getClass() 例如: [java] view p

黑马程序员__三大特性

三大特性 封装 封装是把成员变量包装起来,不让外界直接访问.根据成员变量的作用域,默认都是protect类型的. set 和get方法 有时候我们必须要访问成员变量,但是成员变量被封装起来了,这时候我们就可以用set或者get方法来间接访问成员变量,这样可以确保数据的安全性 1 #import <Foundation/Foundation.h> 2 3 @interface Score : NSObject 4 { 5 int _cScore; // C语言成绩 6 int _ocScore;

黑马程序员__反射_内省_动态代理

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1.Class .class文件加载到内存中就是一个Class对象 获取Class对象的方式有3种: Scanner sc = newScanner("xxx.txt"); Class.forName(sc.nextL

《黑马程序员》 指针练习★ (C语言)

指针的基本概念: 格式: 变量类型  * 变量名            例:int *p;   作用:能够根据1个地址值访问并修改对对应的存储空间 使用: 代码联系1 #include <stdio.h> int main() { int a = 80; //定义一个整形变量a且赋值80: int *p; //定义一个int型指针变量*p p = &a; //取得变量a的地址并且赋给指针p *p = 10; //对p所指向的存储空间(也就是a)赋值 printf("a = %

黑马程序员__多线程总结

java中的多线程 在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口. 对于直接继承Thread的类来说,代码大致框架是: class 类名 extends Thread{ 方法1; 方法2: - public void run(){ // other code- } 属性1: 属性2: -   } 先看一个简单的例子: /**  * @author Rollen-Holt 继承Thread类,直接调用run方法  * */ class hell

黑马程序员__抽象类与接口的区别

在Java语言中, abstract class 和interface是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力. 理解抽象类 abstract class和interface在Java语言中都是用来进行抽象类定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢? 在 面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样.并不是 所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就