classindex - это библиотека сканирования аннотаций времени компиляции, реализованная с использованием обработчика аннотаций.
scanf считывает данные определенного типа в адреса, которые передаются как аргументы второго, thrid, fouth и т. д. ...
int var;
здесь var является значением, а & var является адресом
scanf("%d",&var);
приведенный выше оператор говорит, что ==> read% d (целочисленный) тип данных в & amp; var address
char s[20];
здесь s является адресом не значением. потому что здесь s - массив чартов (мы называемся строкой).
имя массива указывает его адрес. s == & amp; s [0], оба они одинаковы.
scanf("%s",s);
приведенный выше оператор говорит, что ==> read% s (массив символов) тип данных в адресное место, начиная с s.
int a[20];
см. этот код
#include<stdio.h>
#define MAX 5
main()
{
int a[MAX];
int i;
printf("Enter Values of array\n");
for(i=0;i<MAX;i++)
{
printf("Enter a[%d] = ",i);
scanf("%d",&a[i]); // reading each time single integer value starting index with 0 and ending index MAX-1.
}
}
В C У нас не было ни одного спецификатора формата для сканирования группы целых чисел одновременно, как в группе сканирования символов в момент времени с помощью% s.
И здесь a = & amp; a [0];
вы можете сканировать одно целое значение непосредственно на адрес, на который указывает ,
scanf("%d",a);
printf("a[0]=%d\n",a[0]);
, если вы введете 10, затем печатает это значение [0] = 10.
Использование указателей:
, если вы используете указатели, как показано ниже, то вы узнаете. как увеличить указатель и получить значения в разных местах массива.
вы можете переместить местоположение указателя для чтения массивов. вы можете читать массивы с отсутствием местоположения движущегося указателя.
1.Испытывание массивов путем перемещения указателей
#include<stdio.h>
#define MAX 5
main()
{
int a[MAX];
int i;
int *ptr;
ptr = &a[0];
printf("Enter Values of array\n");
for(i=0;i<MAX;i++)
{
printf("Enter a[%d] = ",i);
scanf("%d",ptr);
ptr++; //moving pointer
}
}
2.Развлечения массивов с отсутствием местоположения движущихся указателей
#include<stdio.h>
#define MAX 5
main()
{
int a[MAX];
int i;
int *ptr;
ptr = &a[0];
printf("Enter Values of array\n");
for(i=0;i<MAX;i++)
{
printf("Enter a[%d] = ",i);
scanf("%d",ptr+i); //we are not moving ptr position we scaning each time into next location by incrementing i
}
}
, когда указатель увеличивается, приращение зависит от типа указателя. Здесь ptr является целым указателем, поэтому ptr + 1 будет увеличивать ptr + sizeof (int).
int a[5][5];
Это двухмерный массив, поэтому вам нужно 5 указателей здесь для сканирования, поэтому я был объявлен указателем массив.
#include<stdio.h>
#define MAX 5
main()
{
int a[MAX][MAX],i,j;
int *pointer[MAX];
for(i=0;i<MAX;i++)
pointer[i]=&a[i][0]; //initializes the pointers
printf("Enter elements :\n");
for(i=0;i< MAX;i++)
{
for(j=0;j<MAX;j++)
{
printf("Enter the a[%d][%d] element: ",i,j);
scanf("%d",pointer[i]+j); //each time you will move like 00 01 02 03 04 and second time 10 11 12 13 14 and so on...
//printf("%u or %x",pointer[i]+j,pointer[i]+j);//un comment this line and see the addresses how the address incrementing for each element
}
}
printf("The Given Matrix:\n\n");
for(i=0;i<MAX;i++)
{
for(j=0;j<MAX;j++)
{
printf("%d",*(pointer[i]+j));
printf("\t\t");
}
printf("\n\n");
}
}
Прямое сканирование
printf("Enter elements :\n");
for(i=0;i< MAX;i++)
{
for(j=0;j<MAX;j++)
{
printf("Enter the a[%d][%d] element: ",i,j);
scanf("%d",&a[i][j]); //we can't do like this a++ or ++a or a+i this is illegal in C. for that purpose we are using pointers
}
}
вы найдете большую часть вышеуказанного материала в приведенной ниже книге.
В C строки представляют собой массивы символов (завершаются символом \0
).
Имя массива возвращает указатель на первый элемент массива (ячейка памяти, где хранится массив), а имя скалярной переменной возвращает значение скаляра, поэтому вам нужно использовать оператор &
для получения места памяти скаляра, в котором вам нужно записать значение.
Поскольку строки C имеют тип char []
. Имя массива имеет значение его адреса, но переменной int
нет, вам нужно использовать &
. Неправильно писать void main
, вы всегда должны использовать int main
.