A question on modification of a list via a function invocation
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Wed Sep 6 02:30:37 EDT 2017
On Wed, 06 Sep 2017 01:04:17 +0300, Marko Rauhamaa wrote:
> Chris Angelico <rosuav at gmail.com>:
>
>> That shows that the Java '==' operator is like the Python 'is'
>> operator, and checks for object identity. You haven't manipulated
>> pointers at all. In contrast, here's a C program that actually
>> MANIPULATES pointers:
>>
>> [...]
>>
>> You can't do this with Python, since pointer arithmetic fundamentally
>> doesn't exist. You can in C. Can you in Java?
A necessary (but not sufficient) condition to be able to do pointer
arithmetic is to actually have pointers as a data type.
Pointers are not a data type in either Python or Java, so of course you
can't do pointer arithmetic on them. If you don't have a pointer, you
can't do arithmetic on it.
Pointer arithmetic itself is not the issue. Java could have been like
standard Pascal, and allow pointers as a first class data type (you can
assign them to variables, pass them to functions, return them, have
pointers to pointers, etc) without allowing pointer arithmetic. But they
didn't -- Java the language doesn't include pointers as a value at all.
> You can't do it in Pascal, either, but Pascal definitely has pointers.
Not in standard Pascal, but most actual Pascal compilers let you perform
pointer arithmetic.
--
Steven D'Aprano
“You are deluded if you think software engineers who can't write
operating systems or applications without security holes, can write
virtualization layers without security holes.” —Theo de Raadt
More information about the Python-list
mailing list