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