C PHP Go 指针探究

码农天地 -
C PHP Go 指针探究

前沿

在我学过的语言中有C语言,PHP,Go。今天我们来探讨下,在这些语言中指针的用法有什么不同呢?

定义

我们先来看个个语言中指针的形式吧

C语言中

int i = 5;
int * p = &i;
printf("%p", p);
//结果是 0x7ffef3f4ff64

PHP中

$c = 5;
$b = &$c;
echo $b;
//结果是 5

Go中

var i int = 5;
var p *int = &i 
fmt.Printf("%p", p);
//结果是 0xc0000b602021

从上面我们可以看出来,C和Go在指针的定义和调用上基本相同,区别在于Go没有指针运算。

那C和PHP就差距很大了,首先PHP就没有指针的概念,在PHP中主要说的都是引用。引用意味着用不同的名字访问同一个变量内容,打个比方:它就像一个人有两个不同的名字,它们并不是实际的内存地址

比较

看一段PHP的代码

<?php
    $a = 1;
    $b = &$a;
    echo $a; //1
    unset($b); // unset $b
    echo $a; //1 it's OK

在来看看C语言中的代码

#include<stdio.h>
int main()
{
    int a = 1;
    int *b = &a;
    printf("%d\n", a); //1
    free(b);
    printf("%d\n", a); // 报错invalid pointer
    return 0;
}

从上面就可以看出来,差别还是很大的。 引用和指针并不是相同的概念,指针是针对真实内存的操作,引用是针对指向这个内存的符号表的操作。从操作系统的快捷方式来说,快捷方式是可以删的,这就是PHP的引用。而C不仅删了快捷方式,还把原文件也给删除了。

虽然说PHP的底层说C写的,但是PHP的开发者没有暴露出C的原始指针的能力。

致谢

感谢你看完这篇文章,有什么不对的地方欢迎指出,谢谢?

特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

php介绍

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。

Tags 标签

phpgolangc后端

扩展阅读

加个好友,技术交流

1628738909466805.jpg