重點:陣列與指標的關係、指標運算
練習:畫記憶體圖,追蹤指標變化
#include <stdio.h>
int main() {
int scores[5] = {80, 85, 90, 75, 88};
for (int i = 0; i < 5; i++) {
printf("第 %d 位分數:%d\n", i + 1, scores[i]);
}
return 0;
}
#include <stdio.h>
int main() {
int nums[3];
nums[0] = 10;
nums[1] = 20;
nums[2] = nums[0] + nums[1];
printf("陣列第三項為 %d\n", nums[2]);
return 0;
}
#include <stdio.h>
int main() {
char vowels[5] = {'a', 'e', 'i', 'o', 'u'};
for (int i = 0; i < 5; i++) {
printf("母音 %d:%c\n", i, vowels[i]);
}
return 0;
}
#include <stdio.h>
int main() {
int data[4] = {1, 2, 3, 4};
int sum = 0;
for (int i = 0; i < 4; i++) {
sum += data[i];
}
printf("總和為 %d\n", sum);
return 0;
}
#include <stdio.h>
int main() {
int x = 10;
int *ptr = &x;
printf("x 的值為 %d\n", x);
printf("ptr 指向的值為 %d\n", *ptr);
return 0;
}
#include <stdio.h>
int main() {
int a = 5;
int b = 7;
int *p1 = &a;
int *p2 = &b;
printf("p1 指向的值:%d\n", *p1);
printf("p2 指向的值:%d\n", *p2);
return 0;
}
#include <stdio.h>
int main() {
int value = 42;
int *ptr = &value;
*ptr = *ptr + 1;
printf("更新後的值為 %d\n", value);
return 0;
}
#include <stdio.h>
int main() {
int num = 100;
int *p = #
printf("變數位址:%p\n", p);
printf("內容值:%d\n", *p);
return 0;
}
#include <stdio.h>
int main() {
int arr[3] = {10, 20, 30};
int *p = arr;
printf("第一項:%d\n", *p);
printf("第二項:%d\n", *(p + 1));
printf("第三項:%d\n", *(p + 2));
return 0;
}
#include <stdio.h>
void printArray(int *ptr, int size) {
for (int i = 0; i < size; i++) {
printf("第 %d 項:%d\n", i, *(ptr + i));
}
}
int main() {
int data[4] = {5, 10, 15, 20};
printArray(data, 4);
return 0;
}
#include <stdio.h>
int main() {
int nums[] = {1, 2, 3, 4, 5};
int *ptr = nums;
for (int i = 0; i < 5; i++) {
printf("位址:%p,值:%d\n", ptr + i, *(ptr + i));
}
return 0;
}
#include <stdio.h>
void showFirst(int *arr) {
printf("第一項是 %d\n", arr[0]);
}
int main() {
int values[3] = {100, 200, 300};
showFirst(values);
return 0;
}
#include <stdio.h>
int main() {
int x = 50;
int *p = &x;
printf("原始值:%d\n", *p);
*p += 25;
printf("更新後:%d\n", *p);
return 0;
}
#include <stdio.h>
void increment(int *ptr) {
*ptr = *ptr + 1;
}
int main() {
int value = 99;
increment(&value);
printf("加一後的值:%d\n", value);
return 0;
}
#include <stdio.h>
int main() {
int arr[] = {3, 6, 9};
int *p = arr;
for (int i = 0; i < 3; i++) {
*(p + i) *= 2;
printf("第 %d 項加倍後:%d\n", i, *(p + i));
}
return 0;
}
#include <stdio.h>
void reset(int *p) {
for (int i = 0; i < 4; i++) {
*(p + i) = 0;
}
}
int main() {
int data[4] = {1, 2, 3, 4};
reset(data);
for (int i = 0; i < 4; i++) {
printf("第 %d 項:%d\n", i, data[i]);
}
return 0;
}
#include <stdio.h>
void printSum(int *arr, int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
printf("總和為 %d\n", sum);
}
int main() {
int data[4] = {10, 20, 30, 40};
printSum(data, 4);
return 0;
}
#include <stdio.h>
void doubleArray(int *arr, int size) {
for (int i = 0; i < size; i++) {
arr[i] *= 2;
}
}
int main() {
int nums[3] = {1, 2, 3};
doubleArray(nums, 3);
for (int i = 0; i < 3; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
#include <stdio.h>
void resetArray(int *arr, int size) {
for (int i = 0; i < size; i++) {
arr[i] = 0;
}
}
int main() {
int values[5] = {5, 10, 15, 20, 25};
resetArray(values, 5);
for (int i = 0; i < 5; i++) {
printf("%d ", values[i]);
}
printf("\n");
return 0;
}
#include <stdio.h>
void showLast(int *arr, int size) {
printf("最後一項是 %d\n", arr[size - 1]);
}
int main() {
int data[4] = {11, 22, 33, 44};
showLast(data, 4);
return 0;
}
#include <stdio.h>
int main() {
char name[] = "會安";
printf("你好,%s!\n", name);
return 0;
}
#include <stdio.h>
int main() {
char word[] = "C語言";
for (int i = 0; word[i] != '\0'; i++) {
printf("字元 %d:%c\n", i, word[i]);
}
return 0;
}
#include <stdio.h>
void printChars(char *str) {
while (*str != '\0') {
printf("%c ", *str);
str++;
}
printf("\n");
}
int main() {
char text[] = "指標";
printChars(text);
return 0;
}
#include <stdio.h>
int main() {
char *msg = "Hello, C!";
printf("訊息:%s\n", msg);
return 0;
}
#include <stdio.h>
void showAddresses(int *arr, int size) {
for (int i = 0; i < size; i++) {
printf("第 %d 項位址:%p,值:%d\n", i, arr + i, *(arr + i));
}
}
int main() {
int data[3] = {100, 200, 300};
showAddresses(data, 3);
return 0;
}
#include <stdio.h>
void reverse(int *arr, int size) {
for (int i = size - 1; i >= 0; i--) {
printf("%d ", *(arr + i));
}
printf("\n");
}
int main() {
int nums[4] = {1, 2, 3, 4};
reverse(nums, 4);
return 0;
}
#include <stdio.h>
void trace(int *p) {
printf("初始位址:%p\n", p);
p++;
printf("偏移後位址:%p\n", p);
}
int main() {
int x = 10, y = 20;
int *ptr = &x;
trace(ptr);
return 0;
}
#include <stdio.h>
void modify(int *p) {
*p = *p + 100;
}
int main() {
int value = 50;
printf("原始值:%d\n", value);
modify(&value);
printf("修改後:%d\n", value);
return 0;
}