指针变量赋值

#include<stdio.h>

 #include <stdlib.h>

void main()

{

int a[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

int b[5]={100,101,102,103,104};

int *pa;

pa = &a[3]; // 把 a[3] 的地址给 *paprintf("*pa=%d\n",*pa);

printf("a[3]=%d\n",a[3])

;*pa=b[2]; // b[2] 的数据给 *paprintf("*pa=%d\n",*pa);

printf("a[3]=%d\n",a[3]); // a[3] 数据 变 *pa}*pa 里 只能存一个数。

指针变量赋值有多种方法,以下是常见的几种: ### 指向变量的地址 可以将一个变量的地址赋给指向相同类型变量指针变量。例如,将整型变量`a`的地址赋给指针`pa`和`pb`: ```c #include <stdio.h> int main() { int a; int *pa = &a; int *pb; pb = pa; /*把a的地址赋予指针变量pb*/ printf("Address of a through pa: %p\n", (void *)pa); printf("Address of a through pb: %p\n", (void *)pb); return 0; } ``` 这里`pa`和`pb`均为指向整型变量指针变量,因此可以相互赋值[^1]。 ### 指针初始化 指针初始化时,必须为内存中数据的地址,不可以是变量,也不可以直接用整型地址值(但是`int* p = 0;`除外,该语句表示指针为空)。例如: ```c #include <stdio.h> int main() { int a = 28; int *p = &a; printf("Value of a: %d\n", a); printf("Value of a through pointer p: %d\n", *p); return 0; } ``` 正确的做法是把变量`a`的地址赋给指针`p`[^2]。 ### 指向数组 指针可以指向数组,数组名本身就代表数组首元素的地址。例如: ```c #include <stdio.h> int main() { int arr[5] = {1, 2, 3, 4, 5}; int *ptr = arr; // 等同于 int *ptr = &arr[0]; for (int i = 0; i < 5; i++) { printf("Element %d: %d\n", i, *(ptr + i)); } return 0; } ``` ### 动态内存分配 使用`malloc`、`calloc`或`realloc`等函数动态分配内存,并将返回的内存地址赋给指针。例如: ```c #include <stdio.h> #include <stdlib.h> int main() { int *p = (int *)malloc(sizeof(int)); if (p != NULL) { *p = 10; printf("Value stored in dynamically allocated memory: %d\n", *p); free(p); // 释放动态分配的内存 } return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值