Следующее использование указателя не рекомендуется. Специально для помощи в автоматическом распараллеливании - PullRequest
0 голосов
/ 05 марта 2011

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

1) «Приведение указателей за исключением места размещения кучи».

2) "Арифметика указателя. (Когда мы получаем доступ к области, на которую указывает указатель, используйте оператор разыменования (*) или оператор индекса ([]) для переменной указателя без обновления значения указателя.) "

3) "Обновление значения указателя в условной ветви или цикле, кроме кучи размещение сайта. "

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

5) «Повторное использование объекта кучи в качестве временного буфера. (Повторное использование кучи может быть препятствие извлечения параллелизма, так как труднее проанализировать повторное использование объекта кучи, чем повторное использование переменной порядкового номера.) "

6) "Индекс обращается к элементу массива массива структур. (Если массив структура имеет член массива, передать один элемент массива структур в качестве аргумента функции и доступа к члену в функции вызываемого.) "

1 Ответ

1 голос
/ 06 марта 2011

2)

char *x = "lsdjjasd", *y;
int i;

// Access by index (x still points to beginning of string)
for (i=0; x[i]; i++) {
  x[i] = toupper(x[i]);
}

// Pointer arithemtic (modifying x) 
for (; *x; x++) {
  *x = toupper(*x);
}
// x now points to the end of the string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...