2013-12-25 2 views
-1

Я пытаюсь напечатать числа, введенные пользователем, это может быть любая сумма, поэтому я использовал указатели. Мне сложно распечатать их. Вот мой код:Печать указателя в цикле

#include<stdio.h> 
#include<stdlib.h> 

int main() 
{ 
    int i,n; 
    int *elements; 
    printf("Enter the number of elements to be sorted\n"); 
    scanf("%d", &n); 
    elements = malloc(sizeof(int)*n); 
    for (i=0; i<n; i++) 
    { 
     scanf("%d", *elements); 
    } 
    printf("Elements before sorting\n"); 
    for (i=0; i<n; i++) 
    { 
     printf("%d \n", *elements); 
    } 
} 
+0

Можете ли вы сказать нам, что не работает? – user1781290

ответ

0

Первый

Вы должны пройти зсапЕ адрес, чтобы читать. Так вы и итерация, изменить

scanf("%d", *elements); 

в

scanf("%d", &elements[i]); 

Второй

При печати помните, что вы итерация значения. Меняем

printf("%d \n", *elements); 

в

printf("%d \n", elements[i]); 

#include<stdio.h> 
#include<stdlib.h> 

int main() 
{ 
    int i,n; 
    int *elements; 
    printf("Enter the number of elements to be sorted\n"); 
    scanf("%d", &n); 
    elements = malloc(sizeof(int)*n); 
    for (i=0; i<n; i++) 
    { 
     scanf("%d", &elements[i]); 
    } 

     printf("Elements before sorting\n"); 
     for (i=0; i<n; i++) 
     { 
      printf("%d \n", elements[i]); 
     } 
} 
0
#include<stdio.h> 
#include<stdlib.h> 

int main() 
{ 
    int i,n; 
    int *elements; 
    printf("Enter the number of elements to be sorted\n"); 
    scanf("%d", &n); 
    elements = (int*)malloc(sizeof(int)*n); 
    for (i=0; i<n; i++) 
    { 
     scanf("%d", elements+i); 
    } 

     printf("Elements before sorting\n"); 
     for (i=0; i<n; i++) 
     { 
      printf("%d \n", *(elements+i)); 
     } 
} 
  1. malloc() возвращает указатель void*, вы должны exlicitly преобразовать его в int*, чтобы компилятор мог знать длину шага во время прохождения блока памяти.
  2. scanf() нуждается в адресе в качестве дополнения. Вот почему вы используете &n вместо n. Но elements является указателем, его значение уже является адресом, поэтому просто используйте elements в порядке, но не *elements.
  3. вы должны увеличить elements в обоих циклах for, или все номера будут сохранены в один адрес и заменены один за другим.
Смежные вопросы