Длина строки между указателями

Я использовал трюк, чтобы граница отображалась за пределами контейнера. С помощью этого трюка рисуется только линия, поэтому будет показан фон основного вида.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:bottom="1dp"
        android:left="-2dp"
        android:right="-2dp"
        android:top="-2dp">
        <shape android:shape="rectangle" >
            <stroke
                android:width="1dp"
                android:color="#FF000000" />

            <solid android:color="#00FFFFFF" />

            <padding android:left="10dp"
                android:right="10dp"
                android:top="10dp"
                android:bottom="10dp" />
        </shape>
    </item>

</layer-list>
10
задан Welbog 6 July 2009 в 13:02
поделиться

4 ответа

Просто

length = end - start;

без амперсандов и приведений. Арифметика указателя C позволяет эту операцию.

27
ответ дан 3 December 2019 в 14:11
поделиться

Это просто более поздний указатель минус более ранний указатель.

int length = end - start;

Проверка и пример кода ниже:

int main(int argc, char* argv[])
{
    char buffer[] = "Its a small world after all";
    char* start = buffer+6;  // "s" in SMALL
    char* end   = buffer+16; // "d" in WORLD

    int length = end - start;

    printf("Start is: %c\n", *start);
    printf("End is: %c\n", *end);
    printf("Length is: %d\n", length);
}
8
ответ дан 3 December 2019 в 14:11
поделиться

Этот оператор C вычислит разницу между концом и началом. Просто:

int length = (int)(end - start);
0
ответ дан 3 December 2019 в 14:11
поделиться

Существует даже тип ptrdiff_t, который может содержать такую ​​длину. Он предоставляется 'stddef.h'

1
ответ дан 3 December 2019 в 14:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: