Home » » Con trỏ trong C

Con trỏ trong C

Written By 1 on Chủ Nhật, 15 tháng 12, 2013 | 01:08

I .Lý thuyết :
1. Định nghĩa:
Con trỏ  là một biến(như bạn khai báo biến thông thường), nhưng biến này đặc biệt ở chỗ là nó lưu trữ địa chỉ của vùng nhớ mà nó trỏ tới.
- Bạn muốn con trỏ trỏ tới một biến (thì con trỏ sẽ lưu trữ địa chỉ của biến đó, một số hexa mà bộ nhớ cấp phát )
- Bạn muốn con trỏ trỏ tới một mảng thì nó lưu trữ địa chỉ của phần tử đầu tiên của mảng đó.
- Bạn muốn con trỏ trỏ tới một hàm thì con trỏ sẽ lưu trữ địa chỉ của hàm đó (lát mình chỉ cách dùng)
- Bạn muốn con trỏ trỏ tới một struct(hình như khi học tới con trỏ thì chưa học tới cái này thì phải – lát mình chỉ)
- Bạn muốn con trỏ trỏ tới người yêu của thằng nào đó thì lưu trữ địa chỉ nhà em nó .
- Con trỏ có thể trỏ tới con trỏ ….

và kiểu của con trỏ bạn có thể dùng là (int, char, array, structure, function, hay con trỏ).

2. Ví dụ minh họa :
VD 1: con trỏ với biến :
code :
// con_tro.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<conio.h>
void main()
{
int *p;// khai bao bien con tro p
int i = 40; // khai bao bien i co gia tri 40
p = &i;// gan bien i vao bien con tro
printf("\n Gia tri cua bien con tro :%d", *p);
printf("\n Dia chi o nho cua bien con tro :%d", p);
printf("\n");
_getch();
}

VD 2: con tro với mảng :
code :
// con_tro.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<conio.h>
void main()
{
int arr[] = { 1, 98, 17, 10 };
int *pointer;
pointer = &arr[0];
for (int i = 0; i<4; ++i)
{
printf("\n Gia tri cua phan tu thu %d la: %d", i+1, *(pointer++));
}
printf("\n--------------------------------\n");
for (int i = 0; i<4; ++i)
{
printf("\n Dia chi cua phan tu thu %d la : %d",i+1,  (pointer++) );
}
_getch();
}
VD 3: con trỏ với hàm
code:
// con_tro_ham.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<malloc.h>
#include<conio.h>
void in_put(int *a, int n)
{
int i;
for (i = 0; i< n; i++)
{
printf("\n Nhap phan tu a[%d]= ", i + 1);
scanf_s("%d", (a + i));
}
}
void out_put(int *a, int n)
{
printf("\n Cac phan tu mang vua nhap :");
for (int i = 0; i<n; i++)
printf("%d ", *(a + i));
}
void main()
{
int *a, n;
printf("\n Nhap so phan tu cua mang : ");
scanf_s("%d", &n);
a = (int *)malloc(n*sizeof(int));
in_put(a, n);
    out_put(a, n);
_getch();
}



VD 4: con trỏ với cấu trúc


0 nhận xét:

Đăng nhận xét