自己做个指针编程怎么做

时间:2025-03-04 02:03:49 明星趣事

在C语言中,指针是一种存储变量地址的数据类型。通过使用指针,你可以间接地访问和修改存储在内存中的数据。下面是一个简单的指针编程示例,包括声明指针、初始化指针、访问指针指向的数据以及使用指针作为函数参数。

声明和初始化指针

首先,你需要声明一个指针变量,并使用取地址运算符`&`来获取变量的地址。然后,你可以将这个地址赋值给指针变量。

```c

include

int main() {

int a = 10;

int *ptr; // 声明一个指向整数的指针

ptr = &a; // 将变量a的地址赋值给指针ptr

// 打印变量a的大小、地址和值

printf("Size of the integer is %zu

", sizeof(int));

printf("Address of a is %p

", (void*)a);

printf("Value of a is %d

", a);

// 通过指针访问变量a的值

printf("Value of a via pointer is %d

", *ptr);

return 0;

}

```

访问指针指向的数据

要访问指针指向的数据,你需要使用解引用运算符`*`。

```c

include

int main() {

int a = 10;

int *ptr = &a;

printf("Value of a via pointer is %d

", *ptr);

return 0;

}

```

使用指针作为函数参数

指针可以作为函数的参数,这样你可以在函数内部修改传递的变量的值。

```c

include

// 交换两个整数的值

void swap(int *a, int *b) {

int temp = *a;

*a = *b;

*b = temp;

}

int main() {

int x = 10;

int y = 20;

int *px = &x;

int *py = &y;

printf("Before swap: x = %d, y = %d

", x, y);

swap(px, py);

printf("After swap: x = %d, y = %d

", x, y);

return 0;

}

```

指针与数组

在C语言中,数组名本身就是一个指向数组第一个元素的指针。

```c

include

int main() {

int arr = {1, 2, 3, 4, 5};

int *ptr = arr; // arr是数组的首地址

// 打印数组元素和指针地址

for (int i = 0; i < 5; i++) {

printf("arr[%d] = %d, ptr = %p

", i, arr[i], (void*)ptr);

ptr++; // 移动指针到下一个数组元素

}

return 0;

}

```

二级指针

二级指针是指向指针的指针,可以用来修改指针的值。

```c

include

int main() {

int a = 5;

int *p1 = &a;

int p2 = &p1;

printf("Value of a is %d

", *p1);

printf("Value of p1 is %p

", (void*)p1);

printf("Value of p2 is %p

", (void*)p2);

printf("Value pointed to by p2 (i.e., address of p1) is %p

", (void*)*p2);

printf("Value pointed to by *p2 (i.e., address of a) is %p

", (void*)(*p2));

return 0;

}

```

函数指针

函数指针是指向函数的指针,可以用来调用函数。