scanf đọc loại dữ liệu cụ thể vào địa chỉ được thông qua như là thứ hai, thrid, fouth và vân vân luận ...
int var;
đây var được giá trị và & var là địa chỉ
scanf("%d",&var);
tuyên bố ở trên nói ==> đọc% d (số nguyên) loại dữ liệu thành & địa chỉ var
char s[20];
đây s là địa chỉ không phải là giá trị. vì đây là một mảng điều lệ (chúng tôi được gọi là chuỗi)
chính tên mảng cho biết địa chỉ của nó. s == & s [0], cả hai đều giống nhau.
scanf("%s",s);
tuyên bố ở trên nói ==> đọc% s (mảng ký tự) loại dữ liệu vào vị trí địa chỉ bắt đầu từ s.
int a[20];
xin vui lòng xem mã này
#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.
}
}
Trong C Chúng tôi không có bất kỳ specifier định dạng duy nhất để quét nhóm các số nguyên tại một thời điểm như như nhóm chức năng quét của nhân vật lúc với trợ giúp của% s.
Và tại đây a = & a [0];
bạn có thể quét giá trị số nguyên duy nhất trực tiếp đến địa chỉ được chỉ bằng a.
scanf("%d",a);
printf("a[0]=%d\n",a[0]);
nếu bạn nhập 10 thì in này [0] = 10.
Sử dụng con trỏ:
nếu bạn sử dụng con trỏ như hình dưới đây, sau đó bạn sẽ đến để nhận biết. làm thế nào để tăng con trỏ và nhận được các giá trị vào các vị trí khác nhau của mảng.
bạn có thể di chuyển vị trí con trỏ để đọc mảng. bạn có thể đọc các mảng với vị trí con trỏ di chuyển.
mảng 1.reading bằng cách di chuyển con trỏ địa điểm
#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
}
}
mảng 2.reading với ra di chuyển địa điểm con trỏ
#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
}
}
khi con trỏ tăng lên thì tăng phụ thuộc vào loại con trỏ. Ở đây ptr là số nguyên con trỏ để ptr + 1 sẽ tăng ptr + sizeof (int) địa điểm.
int a[5][5];
đây là hai mảng chiều, do đó bạn cần 5 con trỏ vào đây để quét mảng con trỏ vì vậy tôi đã được công bố.
#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");
}
}
scaning Direct
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
}
}
bạn sẽ tìm thấy hầu hết những thứ trên trong cuốn sách dưới đây.
please goto this link : read the wiki and read
The C Programming Language (Second edition) - Brian W. Kernighan and Dennis M. Ritchie
đọc [một hướng dẫn về chuỗi C] (http://www.codingunit.com/c-tutorial-strings-and-string-library-functions) – Dariusz
@PP có vẻ một chút chiếu cố trong bình luận của anh ấy nhưng anh ấy hoàn toàn đúng: đọc một cuốn sách lập trình C tốt đầu tiên. Kernighan & Ritchie _ Ngôn ngữ lập trình C là một tài nguyên tuyệt vời. – SolarBear
@PP hoàn toàn đúng. Bạn không thể bắt đầu viết C cho đến khi bạn hiểu tại sao & là cần thiết cho một biến và không phải là biến khác. Nó giống như cố gắng lái xe mà không biết sự khác biệt giữa van tiết lưu và phanh. –