2014-10-08 3 views
0
#include<stdio.h> 
void main() 
{ 
    int a[] = { 1, 2, 3, 4 }; 
    int b[] = { 5, 6, 7 }; 
    int *p[2]; 
    p[0] = a; 
    p[1] = &b + 1; 
    printf("%d\n%d", &p[1][0], p[0][1]); 
} 

Здесь p является 1d массива указателей, то, как придет 2d массив используется в printf заявления. Также вывод 1 2.2 одномерный массив указателей в

+1

Вы можете применить 'operator []' к указателю. Это не означает, что указатель представляет собой массив. – juanchopanza

+0

Что такое p [0] [0] mean p является 1d-массивом –

+0

Напомним, что 'a [x]' равно для '* (a + x)' в C. И подумайте, как нумерация N-массива сделанный. – m0nhawk

ответ

0

Индекс оператора [] определяется для указателей выражений, а также выражений массива (которые неявно преобразуются в указатель выражения перед индексом прилагается).

Выражение a[i] оценивается как *(a + i); a является указателем, а a + i дает адрес i «й элемент массива (арифметики указателей основан на заостренный-к типу, если a, указывает на int, то a + i дает адрес i» й int, следующий за номером a).

Поэтому, учитывая ваш массив указателей:

int *p[2]; 

выражение p[0] имеет тип указателя, так что вы можете добавить смещение и разыменования результат: *(p[0] + 1), который так же, как написание p[0][1].

2

Здесь р является 1darray указателей

Да, и вы можете использовать оператор подстрочного ptr[index] с указателями, что эквивалентно *(ptr + index)

Таким образом p[1][0] такая же, как *(p[1] + 0), который является такие же как *(p[1])

Также ваш код не компилируется по нескольким причинам, включая void main()


Простой пример для иллюстрации:

int main() 
{ 
    const char *hello = "hello"; 
    const char *world = "world"; 

    const char *array[2] = {hello, world}; 

    char e = hello[1]; // char e now contains 'e' 
    e = array[0][1]; // same thing as previous line 

    char r = world[2]; // char r now contains 'r' 
    r = array[1][2]; // same thing as previous line 
} 
+0

, но p [1] [1] is * (p [1] + 1) –

+0

, а также выход 2 –

+0

помогите пожалуйста .............. –

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