viem77: (AgentSmith)
[personal profile] viem77
Уже сколько раз было мною озвучено разным гражданам, что C и C++ - разные языки с очень похожим синтаксисом. Не верят...
А уж в то, что в C принципиально нет массивов - тем более. Хотя конструкция a[i] является не более, чем syntactic sugar для *(a+i)... А ведь если именно с этого начинать объяснение "массивов" в си, то резко вырастает уровень понимания работы с памятью.
Не верите, хрен бы с вами, но вот вам архипример с показательной правильностью с точки зрения языка вроде бы идиотской конструкции
int a[] = {1,2,3}; int b; b = 2[a];




#include <stdio.h>

int main(void)
{
 int a[] = {0,1,2,3,4};
 int *= a;
 int i;

 printf("%d %d %d %d\n",a[2], *(a+2), *(2+a), 2[a]);
 for (i = 0; i < 5; i++) printf("%d ", a[i]); printf("\n");
 for (;b-< 5;) printf("%d "*b++); printf("\n");

 return(0);
}

/* Output:
2 2 2 2
0 1 2 3 4 
0 1 2 3 4 
*/























Скомпилируйте и запустите. Радуйтесь.

P.S. Второй цикл вывода just for c power demonstration purposes.



UPD. Да, тут ни одного комментария. Ни одна сука за почти год нихуя не поняла. Впрочем, как и про звонки и три гудка.

Date: 2012-11-04 12:33 pm (UTC)
From: [identity profile] tilimilitram.livejournal.com
Дык. Ясен пень -- "конструкция a[i] является не более, чем syntactic sugar для *(a+i)...". Чтоб удивиться нужно вот прям щас врубаться в C± :)


Date: 2012-11-06 10:59 pm (UTC)
From: [identity profile] viem77.livejournal.com
В любом случае факт коммента этого поста сам по себе уже уникален, тем более что пост почти полуторагодовалой давности.

Нет массивов

Date: 2013-10-12 09:28 pm (UTC)
From: [identity profile] dmitriy nester (from livejournal.com)
А простите, чем вам кучка байтиков по размеру кратная нужным вам типам данных не массив? Ну где написано что массив должен быть именно инкапсулированым обьектом с кучей дополнительных вкусняшек типа определения количества содержимых обьктов, возможности на лету менять размер и прочая...

Re: Нет массивов

Date: 2014-03-13 10:19 pm (UTC)
From: [identity profile] viem77.livejournal.com
А простите, где я говорил об объектности и вкусняшках?
И да, кучка байтиков, теоретически адресуемая с шагом, равным размеру типа данного конкретного (предположительно корректного) указателя на эту кучку, протяженная на число шагов, определяемых неким предположительно указанным программистом в предположительно корректном месте кода действием — не массив вот ни разу мне, а просто указатель на определенное место в памяти. Снабженный не гарантирующим длину шага на разных компиляторах/платформах/архитектурах из-за неявного преобразования внутри себя инструментом, именуемым «арифметикой указателей». Удобным с виду и обманчиво надежным в работе. Да еще и скрытым под покровами как бы доступа по индексу.

February 2013

S M T W T F S
     12
3456789
1011121314 1516
17181920212223
2425262728  

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 26th, 2017 12:44 am
Powered by Dreamwidth Studios