最近在看关于c语言的指针,学习下,发现指针原来运用理解成其实可以抽象出我们java的面向对象封装,地址--> 对象或变量,先看一段代码:

public class Cat {

public String name;

}

public class CatTest {

public static void main(String[] args) {

Cat cat = new Cat(); //new了一个对象,相当于对象即是指针指向了一个地址

cat.name = "cat david";

System.out.println("cat.name = " + cat.name);

int i= 100;

System.out.println("i = " + i);

//i的值不会变化,是因为 i传入的是数值,而change(i),只是新开拓了一个空间地址i

//并赋值给了新创的i变量,所以值没有发生变化

change(i);

System.out.println("i = " + i);

change(cat);

//cat是一个对象,指向的是一个地址门牌,而change(cat)是找到cat的地址,修改了cat地址门牌下对应的name指向地址(即是指针)的数据内容。

System.out.println("cat.name = " + cat.name);

}

public static void change(int i){

i = 200;

}

public static void change(Cat cat){

cat.name = "cat jack";

}

}

输出如下:

===========================

cat.name = cat david

i = 100

i = 100

cat.name = cat jack

===============================

再来看c的内容

//变量名,对内存空间上的一段数据的抽象

void main(){

int i = 90;

i = 89;

printf("i的值为:%d\n",i);

int* p = &i;

//*给p上存储的地址赋值 这种方式叫间接赋值

//指针最最重要的用法,正是有了它,才有了java的面向对象。

// *p = 200;

change(i)

printf("i的值为:%d\n",i);

change(p)

printf("i的值为:%d\n",i);

system("pause");

}

输出:

i的值为:89

i的值为:89

i的值为:300

//局部变量 不改变main函数里面的值

void change(int i){//这儿相当于局部变量开创了一个新的内存空间

i = 300;

}

void change(int* p){

*p = 400;//p是i变量的地址,这一行*p相当于给指定地址改了地址里面的内容。

}

java c 面向对象比较教程_c语言初学指针,对于java面向对象的初理解相关推荐

  1. C语言与Java怎么沟通_c语言初学指针,对于java面向对象的初理解

    最近在看关于c语言的指针,学习下,发现指针原来运用理解成其实可以抽象出我们java的面向对象封装,地址--> 对象或变量,先看一段代码: public class Cat { public St ...

  2. Easystructure教程_C语言源代码自动生成流程图

    目录 Easystructure教程_C语言源代码自动生成流程图 1. 简介 2. 下载 3. 安装 4. 使用 5. 其他软件推荐 5.1 Mermaid 5.2 Code2flow ** Easy ...

  3. Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持

    Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:(          ) A Java反射主要涉及的类如C ...

  4. 【Golang第8章:面向对象编程】Go语言的结构体是什么,怎么声明;Golang方法的调用和声明;go语言面向对象实例,go语言工厂模式;golang面向对象的三大特性:继承、封装、多态

    介绍 这个是在B站上看边看视频边做的笔记,这一章是Glang面向对象编程 这一章内容较多,内容有Go语言的结构体是什么,怎么声明:Golang方法的调用和声明:go语言面向对象实例,go语言工厂模式: ...

  5. Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:()

    例题 (多选)Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:() A. Java反射主要涉及的类如Class, Method, Fi ...

  6. [转载] C语言C++指针与java中引用的一点对此

    参考链接: C/C++指针与Java引用 在C语言或者C++中,我们定义一个整型数组的时候,如下所示 int a[5]; 上面一条语句定义了一个包含5个整型元素的数组,a是一个指针,指向了所定义数组的 ...

  7. c语言字符串加减_C语言中指针的介绍

    C语言中指针的介绍 指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构:能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编 ...

  8. printf 指针地址_c语言对指针的理解

    先来讲一下本人学指针的经历:大一的时候刚接触c语言对指针这东西真的是太迷了,感觉麻烦难懂不想其他语言一样.但是搞懂以后就被指针的魅力吸引甚至喜欢上c语言.不多讲,开始!(文章可能有些长,但放心全是基础 ...

  9. gorm存指针数据_C语言重点——指针篇(一篇让你完全搞懂指针)

    一. 前言 C语言是比较偏底层的语言,为什么他比较偏底层,就是因为他的很多操作都是直接针对内存操作的. 这篇我们就来讲解C语言的一大特点,也是难点,指针和指针操作. 这篇文章我会先从基本类型的存储过程 ...

最新文章

  1. tensorflow tf.global_variables_initializer()(返回一个初始化全局变量的对象)
  2. IIS7 与 WCF 问题总结
  3. 特征点提取—尺度不变特征SIFT算法
  4. Mac常用开源软件与下载链接一览
  5. linux 虚拟一个40段ip,linux – 接口上的Multiples ip地址.我想指定其中一个输出
  6. Google 如何设计与构建超大规模的软件系统
  7. wordpress无法上传中文名的图片
  8. 莫烦pytorch学习笔记(三)
  9. 不用MindManager打开mmap文件
  10. vivado入门教程
  11. 令人惊叹的模糊图像复原软件_如何写一封令人惊叹的求职信,以吸引您(包括模板)...
  12. 「Java代码审计」Java代码审计基础知识「一」
  13. ps魔棒工具抠图和合成图
  14. 怎么设置代理服务器IP上网
  15. 映射异常: An association from the table tb_baoxiao refers to an unmapped class: int
  16. Thinkpad 禁用触摸板
  17. 2019.9.11 小米笔试算法岗编程题 两个动归
  18. 案例研究 | 瓜子二手车战略升级三部曲
  19. 8s数据导入导出的load和unload解析
  20. 【ParaView教程】第二章 基本使用

热门文章

  1. python soup findall_BeautifulSoup库findAll()、find()方法详解
  2. php %3cpre%3c pre%3e,PHP代码执行与命令注入
  3. mysql 表锁的概念_MySQL 锁的一些简单概念
  4. 二级C语言程序设计备考方法
  5. 制作漫画风图片(无需下载APP无需PS无需电脑)
  6. scrapy初始化selenium,防止网站反爬虫策略监测自动化控件
  7. python使用正则表达式删除字符串中的数字
  8. 区块链矿池(pool)汇总(不定期更新,欢迎评论区留言)
  9. java届的黄埔军校_法学界的“黄埔军校”:拒绝与985合并,是其最大遗憾
  10. thinkphp框架学习笔记(1)