1
TIN HỌC ĐẠI CƯƠNG
www.uit.edu.vn
BÀI 9
BÀI 9
CON TRỎ VÀ ĐỊA CHỈ
CON TRỎ VÀ ĐỊA CHỈ
MẢNG
MẢNG
HÀM VÀ CHƯƠNG TRÌNH
HÀM VÀ CHƯƠNG TRÌNH
CHUỖI KÝ TỰ
CHUỖI KÝ TỰ
Tin học đại cương
2
NỘI DUNG
NỘI DUNG
CON TRỎ VÀ ĐỊA CHỈ
5
Tin học đại cương
3
Toán tử địa chỉ &
Con trỏ
Qui tắc sử dụng con trỏ
Qui tắc về kiểu giá trị trong khai báo
NỘI DUNG BÀI CON TRỎ VÀ ĐỊA CHỈ
x được cấp phát vùng nhớ có kích thước
2 byte liên tiếp. Giả sử tại địa chỉ 1050,
ta có:
Địa chỉ của x: &x = 1050, giá trị của x = 5
1050
5x
TOÁN TỬ ĐỊA CHỈ
TOÁN TỬ ĐỊA CHỈ
Tin học đại cương
7
KHÁI NIỆM BIẾN CON TRỎ
Là một biến dùng để lưu địa chỉ của một
biến, mỗi loại địa chỉ sẽ có một kiểu con
trỏ tương ứng (phụ thuộc vào loại dữ liệu
lưu trữ trong địa chỉ đó)
PHÂN LOẠI CON TRỎ
Con trỏ kiểu int dùng để chứa địa chỉ của
các biến kiểu int. Tương tự ta có con trỏ
kiểu float, double, …
CON TRỎ
CON TRỎ
Tin học đại cương
8
KHAI BÁO BIẾN CON TRỎ
Sử dụng địa chỉ chứa trong con trỏ
Ví dụ:
int *p, *q;
int x = 5;
// gán đ/c biến x cho con trỏ p
p = &x;
// lưu đ/c trong p vào con trỏ q
q = p;
Giả sử địa chỉ của x là 1010 thì p = 1010
và q = 1010
QUI TẮC SỬ DỤNG CON TRỎ
QUI TẮC SỬ DỤNG CON TRỎ
Tin học đại cương
11
DẠNG KHAI BÁO CỦA CON TRỎ
Sử dụng giá trị lưu tại vùng nhớ mà
con trỏ trỏ tới
Ví dụ:
int *p, *q;
int x = 5, z;
p = &x; // *p = x = 5;
q = p; // *q = *p = x = 5
// z = 5 + 3*5 = 20;
z = *p + 3*(*q);
QUI TẮC SỬ DỤNG CON TRỎ
QUI TẮC SỬ DỤNG CON TRỎ
Mảng và con trỏ
Mảng và hàm
Tin học đại cương
15
KHAI BÁO MẢNG
KHAI BÁO MẢNG
Cú pháp:
<KiểuDL> <Tên > [<Danh
sách các chiều >];
Ví dụ 1:
int a[100];
int P[100][100];
Ví dụ 2:
#define MAX 100
float c[MAX][MAX], d[MAX];
Tin học đại cương
16
CHỈ SỐ MẢNG
CHỈ SỐ MẢNG
KIỂU DỮ LIỆU CỦA CHỈ SỐ
Chỉ số của mảng phải là một giá trị kiểu đơn
giản, rời rạc: số nguyên, ký tự.
Nếu là số nguyên thì mặc định từ số 0.
#include <conio.h>
#define MAX 100
void main()
{
int A[MAX], N, i;
printf(“So phan tu cua mang:");
scanf("%d", &N);
for(i=0;i<N;i++)
{
printf("Nhap phan tu A[%d]: ",i);
scanf("%d", &A[i]);
}
for(i=0; i<N; i++)
printf("%4d", A[i]);
}
Tin học đại cương
19
#include <stdio.h>
#include <conio.h>
#define MAX 100
void main()
{
float A[MAX], temp;
int N, i;
printf(“So phan tu cua mang: ");
scanf("%d", &N);
for(i=0; i<N; i++)
{
printf("Nhap phan tu A[%d]: ",i);
scanf("%f", &temp);
void main()
{
int a[MAX], N, i, *pa;
pa = a;
printf(“So phan tu cua mang: ");
scanf("%d", &N);
for(i=0; i<N; i++)
{
printf("Nhap phan tu a[%d]: ", i);
scanf("%d", pa+i);
}
for(i=0; i<N; i++)
printf("%4d", *(pa+i));
}
Tin học đại cương
22
CÁC KHAI BÁO TƯƠNG ĐƯƠNG
int *pa; int pa[];
double *pa; double pa[];
char *pa; char pa[];
long *pa; long pa[];
SỰ TƯƠNG QUAN MẢNG VÀ CON TRỎ
SỰ TƯƠNG QUAN MẢNG VÀ CON TRỎ
Tin học đại cương
23
25
// định nghĩa hàm nhập
void nhap(int A[], int N)
{
for(int i=0; i<N; i++)
{
printf(“Nhap phan tu thu %d: ", i);
scanf(“%d”, &A[i]);
}
}
// định nghĩa hàm xuất
void xuat(int A[], int N)
{
for(int i=0; i<N; i++)
{
printf("%4d", A[i]);
}
}
CHƯƠNG TRÌNH MINH HỌA (tt)
CHƯƠNG TRÌNH MINH HỌA (tt)