ตัวชี้ P O I N T E R Created By Tasanawan Soonklang

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Advertisements

ชนิดของข้อมูลในโปรแกรม Interactive C
Pointers. Why have pointers? / pointers ทำให้ฟังก์ชันหรือส่วนของ โปรแกรมสามารถใช้งานข้อมูลร่วมกันได้ / ใช้ pointers ในการสร้างโครงสร้างข้อมูลที่ ซับซ้อนได้
ครั้งที่ 9 Function(ต่อ).
โครงสร้างโปรแกรมภาษา C
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
ตัวแปรประเภทตัวชี้ (Pointer)
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
การเขียนโปรแกรมด้วยคำสั่งเบื้องต้น
ข้อมูลชนิดสตริง String บทที่ 8
BC322 ครั้งที่ 10 ตัวแปรชุด (Array)
ครั้งที่ 8 Function.
การรับค่าและแสดงผล.
พอยน์เตอร์ (Pointer) Chapter Introduction to Programming
ข้อมูลชนิดโครงสร้าง (Structure Data)
สายอักขระและ การประมวลผลสายอักขระ (String and String manipulation)
บทที่ 11 การเขียนโปรแกรมโดยใช้ข้อมูลชนิดพอยท์เตอร์
Data Type part.III.
หลักการโปรแกรม 1 Lecture 3: ตัวแปร, นิพจน์คณิตศาสตร์, การคำนวณทางคณิตศาสตร์,การดำเนินการกับสายอักขระ.
Structure Programming
Array.
Week 6 ประกาศค่าตัวแปร.
การแสดงผล และการรับข้อมูล
ฟังก์ชั่น function.
ตัวแปรชุด.
Lecture no. 10 Files System
การรับข้อมูลเบื้องต้นโดยใช้ฟังก์ชั่น scanf
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
Arrays.
บทที่ 12 Structure and union Kairoek choeychuen
บทที่ 6 ตัวแปรอาร์เรย์ (Array of Variable)
C Programming Lecture no. 9 Structure.
C Programming Lecture no. 6: Function.
ข้อมูลชนิดอาร์เรย์ ประเภทของข้อมูลที่ผ่านมาส่วนใหญ่ในตอนต้นๆจะเป็นข้อมูลเดี่ยว โดยตัวแปรหนึ่งตัวสามารถเก็บข้อมูลได้หนึ่งตัว ถ้าหากต้องการเก็บข้อมูลหลายตัวจะต้องประกาศตัวแปรหลายตัว.
บทที่ ไลบรารีฟังก์ชัน
หน่วยที่ 1 พื้นฐานภาษา C
หน่วยที่ 14 การเขียนโปรแกรมย่อย
อาร์เรย์และข้อความสตริง
อาร์เรย์ (Array).
สตริง (String).
ตัวแปร (Variable) คือ ชื่อที่ตั้งขึ้นเพื่อเก็บข้อมูลในหน่วยความจำ สามารถเก็บข้อมูลชนิดใดก็ ได้ ลักษณะที่สำคัญ ค่าที่จัดเก็บ เมื่อปิดโปรแกรมข้อมูลจะหายไป.
การเขียนโปรแกรมภาษาซี
ตัวแปรกับชนิดของข้อมูล
การสร้างฟังก์ชั่นเพื่อพัฒนาโปรแกรม Interactive C
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
ฟังก์ชันรับข้อมูล ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ปฏิบัติการครั้งที่ 10 pointer. หน่วยความจำ หน่วยความจำนั้นเสมือนเป็นช่องว่างไว้เก็บ ของที่มีหมายเลขประจำติดไว้ที่แต่ละช่อง เพื่อใช้ในการระบุตำแหน่งของช่องได้
บทที่ 5 ฟังก์ชันกับอาร์เรย์ Function & Array
การรับและพิมพ์ข้อมูลเบื้องต้น
ตัวแปรกับชนิดของข้อมูล
Week 2 Variables.
การประมวลผลสายอักขระ
Computer Programming for Engineers
ความหมาย การประกาศ และการใช้
2 /* ข้อความนี้เป็นเพียงคำอธิบาย ไม่มีผลต่อขั้นตอนการ ทำงานของโปรแกรม */ /* A simple program to display a line of text */ #include void main ( ) { printf.
Call by reference.
โครงสร้างภาษาซี #include <stdio.h> void main() {
คำสั่งเกี่ยวกับการรับ และแสดงผล
วิธีการเขียนโปรแกรมเพื่อทำงานกับข้อมูล โดยที่ ข้อมูลนั้นจะต้อง 1. เป็นประเภทเดียวกัน | ตัวเลข, ตัวอักษร 2. มีขนาดเท่ากัน ? ARRAY คืออะไร.
L/O/G/O ฟังก์ชั่นการรับและ แสดงผล และฟังก์ชั่นทาง คณิตศาสตร์
บทที่ 11 การจัดการข้อมูลสตริง
การเขียนโปรแกรม (ภาษาซี)
1 สตริง (String) การประกาศค่าตัวแปรสตริง การกำหนดค่าสตริง การอ้างอิงตัวอักษรแต่ละตัวในสตริง ฟังก์ชั่นที่ใช้ในการจัดการสตริง ฟังก์ชั่นในการเปลี่ยนรูปแบบของสตริง.
บทที่ 6 ตัวแปรชุดและ สตริง รายวิชา ง การเขียนโปรแกรมเชิง วัตถุ Reading: ใบความรู้ บทที่ 6.
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
Computer Programming Asst. Prof. Dr. Choopan Rattanapoka
บทที่ 11 พอยเตอร์ C Programming C-Programming. จันทร์ดารา Surin Campus : มีอะไรบ้างในบทนี้  ตัวแปรพอยเตอร์ (Pointer) เป็นตัว แปรที่แปลกและแตกต่างไปจากตัว.
ใบสำเนางานนำเสนอ:

ตัวชี้ P O I N T E R Created By Tasanawan Soonklang Template PPT By http://www.templateswise.com

ตัวแปร เป็นชื่อที่ใช้แทนข้อมูลหนึ่งๆ int a; a = 10; เป็นชื่อที่ใช้แทนข้อมูลหนึ่งๆ การประกาศตัวแปรเป็นการกำหนดชื่อเพื่อใช้แทนข้อมูล มีการจองเนื้อที่ในหน่วย ความจำเพื่อเก็บข้อมูล a 400 402 404 10

พอยเตอร์ หรือ ตัวชี้ ตัวแปรพอยเตอร์ (pointer) ทำหน้าที่เป็นตัวชี้ a 400 402 404 10 int a; a = 10; int *ptr; ptr = &a; ตัวแปรพอยเตอร์ (pointer) ทำหน้าที่เป็นตัวชี้ เก็บแอดเดรส (address) ของข้อมูล แอดเดรส คือ ตำแหน่งในหน่วยความจำ 400 ptr 800

ชนิดข้อมูล *ชื่อตัวแปรพอยเตอร์ ; รูปแบบการประกาศ ชนิดข้อมูล *ชื่อตัวแปรพอยเตอร์ ; ใช้เครื่องหมาย * ตัวอย่างเช่น int *p; char *pch; การเข้าถึงข้อมูล *p = 20; *pch = ‘x’; printf(“%d”,*p); printf(“%c”,*pch);

ชื่อตัวแปรพอยเตอร์ = &ชื่อตัวแปรที่ต้องการชี้; การกำหนดค่า ชื่อตัวแปรพอยเตอร์ = &ชื่อตัวแปรที่ต้องการชี้; ใช้เครื่องหมาย & คล้ายกับการใช้ scanf int a; scanf(“%d”,&a); 1 int age; 2 int *ptr; 3 age = 25; 4 ptr = &age;

การใช้งาน ข้อแตกต่างระหว่าง age และ &age age อ้างถึงค่าที่เก็บในตัวแปร 1 int age; 2 int *ptr; 3 age = 25; 4 ptr = &age; 5 printf(“%d”,age); ptr Value of age age Address of age 72009 25 72009

การใช้งาน ข้อแตกต่างระหว่าง ptr และ *ptr ptr อ้างถึงแอดเดรส 1 int age, ru=10; 2 int *ptr; 3 age = 25; 4 ptr = &age; 5 printf(“%d”,age); 6 *ptr = ru; *ptr); ptr Value of age age 72009 Address of age 25 10 72009

ptr 25 age 72011 72009 10 ru 10 25 10 1 int age, ru=10; 2 int *ptr; 5 printf(“%d”,*ptr); 6 *ptr = ru; 7 printf(“%d”,*ptr); 25 10 72009 ptr 25 age 72011 72009 10 72011 1 int age, ru=10; 2 int *ptr; 3 age = 25; 4 ptr = &age; 5 printf(“%d”,*ptr); 6 ptr = &ru; 7 printf(“%d”,*ptr); ru 10

100 #include<stdio.h> main() { int *p,q; q = 100; p = &q; printf("%d", *p); } #include<stdio.h> main() { int *p; float q, temp; temp = 1234.34; p = &temp; q = *p; printf("%f",q); } can’t convert float to int

Pointer & Array พอยเตอร์และอาร์เรย์มีความสัมพันธ์กัน ชื่อตัวแปรอาร์เรย์จะเก็บแอดเดรสอยู่แล้ว สามารถใช้พอยเตอร์ชี้แทนการระบุตำแหน่ง (index) ได้ ทำงานได้รวดเร็วกว่า โดยเฉพาะเมื่อข้อมูลมีขนาดใหญ่ พอยเตอร์จะชี้ไปยังตำแหน่งแรกของอาร์เรย์ อ้างถึงสมาชิกตัวใดๆ ได้โดยการกระทำทางคณิตศาสตร์ โดยใช้เครื่องหมาย ++, --, +, -

ตัวอย่าง x 1 400 2 3 404 ptr 400 402 404 ptr+1 อ้างถึงแอดเดรสของ x[1] 1 int x[5] = {1,2,3,4,5}; 2 int *ptr; 3 ptr = x; 4 ptr = &x[2]; 1 400 2 3 X[2] 404 ptr+1 อ้างถึงแอดเดรสของ x[1] ptr+2 อ้างถึงแอดเดรสของ x[2] *(ptr+2) อ้างถึงค่าของ x[2] ptr 800

1 2 3 Pointers are fun #include "stdio.h" 1 2 3 #include "stdio.h" int a[10] = {1,2,3,4,5,6,7,8,9,10}; main() { int *p; p = a; printf("%d %d %d\n",*p, *(p+1), *(p+2)); printf("%d %d %d",a[0],a[1],a[2]); } Pointers are fun #include "stdio.h" char str[ ] = "Pointers are fun"; main() { char *p; int i; p = str; for(i=0;p[i];i++) printf("%c",p[i]); }

printf("Enter a string :"); gets(str); for(i=0;str[i];i++) Enter a string: ThAiLaNd THAILAND thailand #include "stdio.h" #include "ctype.h" main() { char str[80] ; int i; printf("Enter a string :"); gets(str); for(i=0;str[i];i++) str[i] = toupper(str[i]); printf("%s\n",str); str[i] = tolower(str[i]); } char *p; p = str; while(*p) { *p = toupper(*p); p++; } printf("%s\n",str); while(*p) *p++ = tolower(*p);

char str1[] = "Pointers are fun"; main() { char str2[80], *p1, *p2; Nuf era sretnioP #include "stdio.h" #include "string.h" char str1[] = "Pointers are fun"; main() { char str2[80], *p1, *p2; p1 = str1+strlen(str1)-1; p2 = str2; while(p1>=str1) *p2 = *p1; *p1--; *p2++; } printf("%s\n%s",str1,str2); *p2++ = *p1--;

#include <stdio.h> #define n 5 char days[ ][10] = {"monday","tuesday","wednesday", "thursday", "friday""}; void print_strings(char *table[ ], int num); main() { print_strings(days,n); } void print_strings(char *table[ ], int num) int i; for (i = 0; i < num; i++) printf(“%d %s\n", table[i], table[i]); 0000 monday 0007 tuesday 0015 wednesday 0025 thursday 0034 friday *days[ ] *(days + i) *(days+0) -> days[0] = “monday” *(days+1) -> days[1] = “tuesday” *(days+2) -> days[2] = “wednesday” *(days+3) -> days[3] = “thursday” *(days+4) -> days[4] = “friday”

days[0] days[1] days[2] days[3] days[4] days[0] days[0]+0 *(days+0)

Lab 10 ใช้ index ในการอ้างถึงค่า Enter string1: Computer science Enter string2: Information technology Swap strings String1 = Information technology String2 = Computer science Lab 10 ใช้ index ในการอ้างถึงค่า เขียนโปรแกรมเก็บค่าสตริง 2 ค่าขนาดไม่เกิน 30 ตัวอักษรในอาร์เรย์ A และ B ทำการสลับค่าข้อมูลในตัวแปรอาร์เรย์ทั้งสอง แสดงผลในค่าอาร์เรย์ทั้งสอง ใช้ pointer ในการอ้างถึงค่า เขียนโปรแกรมเก็บค่าสตริง 2 ค่าไม่ระบุขนาดโดยใช้พอยเตอร์ A และ B ทำการสลับค่าข้อมูลในตัวแปรพอยเตอร์ทั้งสอง แสดงผลในค่าพอยเตอร์ทั้งสอง

Lab 10 1. กำหนดตัวแปรสตริงเพื่อเก็บข้อความขนาดไม่เกิน 80 คำ Homework Lab 10 Enter string: The representation of objects of the type is hidden from the program units. 15 words Words Length The 3 representation 14 of 2 objects 7 … ... 1. กำหนดตัวแปรสตริงเพื่อเก็บข้อความขนาดไม่เกิน 80 คำ 2. ตรวจสอบสตริงว่ามีกี่คำ 3. เก็บแต่ละคำในอาร์เรย์ของตัวแปรสตริงแบบพอยเตอร์ 4. แสดงผลลัพท์โดยพิมพ์ จำนวนคำทั้งหมด คำ และ ความยาวของคำ

pointer age 72009 50 18 #include<stdio.h> void main() { int age; How old are you: 18 You are 18 years old. You are 50 years old. #include<stdio.h> void main() { int age; int *pointer; printf(“How old are you : ”); scanf(“%d”,&age); printf(“You are %d years old.\n”,age); pointer = &age; *pointer =50; printf(“You are %d years old. \n, age); } pointer Value of age age 72009 50 18 Address of age 72009

Pointer & Function ใช้ส่งผ่านค่าไปยังฟังก์ชั่นได้ ใช้ในการคืนค่ากลับจากฟังก์ชั่นได้มากกว่า 1 ค่า ใช้ในการรับส่งค่าอาร์เรย์ให้กับฟังก์ชั่นได้ เรียกว่า call-by-reference

Call-by-value tmp = p; p = q; q = tmp; สลับค่า (swap) a = 6, b = 2 #include "stdio.h“ void swap (int p, int q) { int tmp; tmp = p; p = q; q = tmp; } main() int a = 6, b = 2; printf("a = %d, b = %d\n", a, b); swap(a, b);

Call-by-reference #include "stdio.h“ void swap (int *p, int *q) { a = 6, b = 2 a = 2, b = 6 #include "stdio.h“ void swap (int *p, int *q) { int tmp; tmp = *p; *p = *q; *q = tmp; } main() int a = 6, b = 2; printf("a = %d, b = %d\n", a, b); swap(&a, &b);

printf("a = %d, b = %d\n", a, b); swap(&a, &b); } #include "stdio.h“ void swap (int *, int *) main() { int a = 6, b = 2; printf("a = %d, b = %d\n", a, b); swap(&a, &b); } void swap (int *p, int *q) int tmp; tmp = *p; *p = *q; *q = tmp;

#include<stdio.h> void change(int p) { p = 50; Before num = 20 Now num = 50 After num = 20 Before num = 20 Now num = 50 After num = 50 #include<stdio.h> void change(int p) { p = 50; printf(“Now num = %d\n”, p); } void main() int num=20; printf(“Before num = %d\n”,num); change(num); printf(“After num = %d\n”, num); * * * change(&num);

#include<stdio.h> int num1, num2; void input() { Input number1 : 15 Input number2 : 30 15 30 #include<stdio.h> int num1, num2; void input() { printf(“\n Input number1 : ”); scanf(“%d”,&num1); printf(“\n Input number2 : ”); scanf(“%d”,&num2); } void main() input(num1,num2); printf(“%d %d”, num1,num2);

#include<stdio.h> void input(int a, int b) { Input number1 : 15 Input number2 : 30 15 30 #include<stdio.h> void input(int a, int b) { printf(“\n Input number1 : ”); scanf(“%d”, a); printf(“\n Input number2 : ”); scanf(“%d”, b); } void main() int num1, num2; input( num1, num2); printf(“%d %d”, num1,num2); * * & & & &

#include<stdio.h> void input(int *, int *); int adder(int a, int b) { return a+b; } void main() int num1, num2,result; input(&num1,&num2); result = add(num1, num2); printf(“%d”, result); void adder(int a, int b, int *add) { *add = a+b; } add(num1, num2,result);

May the Force be with YOU. …^( ^ ^ )^... Thanks, your watching.