2015-07-14 3 views
-1

Здравствуйте, я наткнулся на это объяснение о поиске первого не повторяющегося числа в массиве. http://www.geeksforgeeks.org/given-a-string-find-its-first-non-repeating-character/ В этом объяснении, я не понимаю, что это значитЧто такое dos count [i] ++ mean

count[*(str+i)]++; or count[index]++; 

Может кто-нибудь, пожалуйста, помогите мне понять это

+1

Вы увеличиваете значение на 'count [index]' на 1 ... просто посмотрите, какой доступ к массиву и инкремент. – Jashaszun

+0

count [] инициализируется до нуля. Символы используются в качестве индексов для увеличения элементов в счетчике, создания гистограммы, подсчета количества вхождений для каждого символьного значения на странице. Этот же метод hisotgram также используется для фазы подсчета [сортировки/радикса] (http://en.wikipedia.org/wiki/Counting_sort). – rcgldr

ответ

2

Короткая версия:

count[index]++ представляет собой сокращенную count[index] = count[index] + 1.

Длинная версия:

Выражение i++оценивает к текущему значению i, и в качестве побочного эффекта инкрементируется значение, хранящееся в i на 1. Таким образом, код ссылки

int a = 1, b; 
b = a++; 
printf("a = %d, b = %d\n", a, b); 

Выход будет

a = 2, b = 1 

Соответствующая префиксная версия ++i; В этом случае, выражение принимает значение i+1 и в качестве стороны с шагом эффекта i по 1, так что

int a = 1, b; 
b = ++a; 
printf("a = %d, b = %d\n", a, b); 

дает выход

a = 2, b = 2 

Там имеют соответствующий префикс и Постфиксные -- операторов, которые вычитать 1.

Заметим, что выражения, как

i++ * i++ 
i = i++ 
a[i] = i++ 
printf("%d %d", i++, i++) 

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

+0

Как вы удалили свой пост, я могу ответить здесь. Это не я проголосовал. На мой взгляд, ваш ответ был верным. Не волнуйся. Будь счастлив.:) –

0

count[index]++; означает, что вы приращение значения на единице в конкретной index в массиве count.

Если вы не понимаете массивы или сокращенные символы, такие как ++ Я бы рекомендовал искать документацию/руководства по массивам и операторам.

0

1) подсчет [индекс] ++ является пост-затруднительное обозначения ++, то есть я будет увеличивать значение I, но вернуть исходное значение, которое я провел перед тем, как увеличивается.

Также count [index] ++ = count [index] +1 // приращение значения на 1. здесь индекс - это местоположение.

2) Количество [(ул + я)] ++
здесь (ул + я) возвращает значение, хранящееся по адресу ул расположения указателя + я все, что значение I является, и который выступает в качестве значения индекса считать. Наконец, значение счета [
(str + i)] увеличивается, как объяснялось выше.

Надеюсь, что помогло.

Смежные вопросы