Can I access the vtKImageData pixel value code using array subscript method?

like ((int*)(src->GetScalarPointer()))[n]

You can use ranges from vtkDataArrayRange.h

#include <vtkDataArrayRange.h>
#include <vtkIntArray.h>
#include <vtkSmartPointer.h>

int main()
{
  vtkSmartPointer<vtkIntArray> array = SomeArraySource();
  auto valueRange = vtk::DataArrayValueRange<1>(array);
  vtkIdType n = SomeIndex();
  int val = valueRange[n]; // operator[] access

  using ConstIterator = typename decltype(valueRange)::ConstIteratorType;
  ConstIterator it = valueRange.begin(); // iterator handle

  return EXIT_SUCCESS;
}

However beware that valueRange is NOT a pointer.

How do I use the head pointer returned by vtKImageData ->GetScalarPointer()

std::cout << (int)(src->GetScalarPointer(i, j, k)) << " ";
std::cout << (src->GetPointData()->GetScalars()->GetTuple(0))[i * src->GetDimensions()[1] * src->GetDimensions()[2] + j * src->GetDimensions()[2] + k] << " ";Get different values