Sub calcL(ByRef S) index = 0 For k = Len(S) To 1 Step -1 If (Mid(S, k, 1) = " ") Or (Mid(S, k, 1) = ".") Or (Mid(S, k, 1) = ",") Then index = k Exit For End If Next k L = 0 For k = index - 1 To 1 Step -1 If Mid(S, k, 1) = " " Then index = k Exit For Else L = L + 1 End If Next k MsgBox "Длина предпоследнего слова " + Str(L) End Sub Sub test() Call calcL("В данном предложении несколько слов") Call calcL("Второе предложение более длиннее первого")End Sub
1) Разность: получится число переменных данного типа, которые смогли бы поместиться между адресами, на которые указывают указатели. Например: // зададим фиксированные адреса: int p1 = (int *)0x1000; int p2 = (int *)0x1004; int e = p2 - p1; Здесь 'e' = 1, т.е. равно числу переменных типа 'int', поместившихся бы между адресом 0x1000 и 0x1004. 2) Когда имеет место косвенная адресация, т.е. один указатель ссылается на другой, а тот - на переменную. Тогда, чтобы изменить значение переменной через 1-ый указатель мы используем разыменование 2 раза: int a; int *p1 = &a; int **p2 = &p1; **p2 = 10; // => a = 10
Sub test() Call calcL("В данном предложении несколько слов") Call calcL("Второе предложение более длиннее первого")End Sub