# Why use a different pointer dereference operator than C?

**URL:** <https://ziggit.dev/t/why-use-a-different-pointer-dereference-operator-than-c/4235>\
**Category:** Explain\
**Created:** [May 8, 2024, 11:22am UTC](https://ziggit.dev/t/why-use-a-different-pointer-dereference-operator-than-c/4235 "2024-05-08T11:22:21Z")\
**Posts on this page:** 1\
**Page:** 2

<div class="post-metadata">

**Author:** ![dee0xeed](https://ziggit.dev/letter_avatar_proxy/v4/letter/d/3ab097/32.png) [@dee0xeed](https://ziggit.dev/u/dee0xeed)\
**Post date:** [May 9, 2024, 11:01am UTC](https://ziggit.dev/t/why-use-a-different-pointer-dereference-operator-than-c/4235/21 "2024-05-09T11:01:44Z")

</div>

> [@aiac](#):
>
> they are somewhat consistent
> 
> ```zig
> a: *u8 => a.*
> a: []u8 => a[0]
> 
> ```

`*u8` is a _type_ (pointer to single byte)  
`[]u8` is also a _type_, slice of bytes

In my logic (more general/important/primary things should go first) it’a quite ok.  
In `*u8` pointer is primary, u8 is secondary.  
In `[]u8` slice is primary, u8 is secondary (compare with C’s `u8 a[]` - it’s actually awful - type-name-array)

[Previous page](https://ziggit.dev/t/why-use-a-different-pointer-dereference-operator-than-c/4235.md?page=1)
