Передача массива структуры в функцию и выполнение над ней операции sizeof - PullRequest
0 голосов
/ 02 декабря 2010

Я полагаю, очень похоже на стандартные массивы (то есть целочисленные массивы), когда вы передаете массив структур, вы должны передать размер массива вместе с ним. Однако что я еще не понимаю, так это то, что когда вы берете размер первого элемента структуры, вы получите 4 (то есть 4 байта в первом элементе?).

Теперь я передаю массив структур, который содержит только строки. Я проверяю размер одного элемента массива (помните, что это будет одна структура), я получаю что-то вроде 28, но после того, как я передал его в функцию (и да, переданный в функцию, я имею в виду, переданный по значению адрес адреса первый элемент в моем массиве), я получаю только 4.

Теперь я предполагаю, что sizeof получает первый элемент моей структуры в массиве. Итак, у меня есть мой массив myArray типа myStruct:

myStruct { Имя строки Строковый адрес Строка почтовый индекс }

Полагаю, sizeof смотрит на "имя"? Но я точно знаю, что длина имени не 4 байта, а 10.

На что конкретно смотрится размер? Как выглядит структура памяти массива структур?

Спасибо Thomas

Ответы [ 2 ]

0 голосов
/ 02 декабря 2010

sizeof() работает с типами, а не с объектами.sizeof(some_object) неявно принимается как - с использованием псевдо-записи - "sizeof(typeof(some_object))".

0 голосов
/ 02 декабря 2010

4 будет размером переданного вами указателя, а не размером структуры, к которой он относится.

...