2023/3/21作业三

文章详细介绍了C语言中指针的使用,包括定义、赋值、地址运算及取值操作。通过示例代码展示了如何定义指针变量,获取和修改指针所指向的变量值,以及指针在数组操作中的应用。同时,文章提到了void指针的特性,强调了指针在内存管理中的关键作用。
摘要由CSDN通过智能技术生成

指针使用

一:

//1.定义一个整型变量a,输出a的地址和值。

//2.定义一个指向整型变量a的指针ptr,输出指针ptr的值以及指针所指向的变量a的值。

//3.修改指针ptr的值,使其指向变量a的地址-1,并输出ptr的值和所指向的变量的值。

//4.定义一个整型数组arr,输出数组的首地址和第一个元素的地址以及值。

//5.定义一个指向数组arr的指针p,输出指针p的值以及所指向的数组元素的值。

//6.修改指针p的值,使其指向数组arr的第二个元素,输出指针p的值以及所指向的数组元素的值。

//7.定义一个指向指针p的指针pp,输出指针pp的值以及所指向的指针p的值和指向的数组元素的值。

#include<stdio.h>

int main(){

int a=0;

printf("&a=%p,a=%d\n",&a,a);

int*ptr=&a;

printf("ptr=%p,*ptr=%d\n",ptr,*ptr);

ptr=ptr-1;

printf("ptr=%p,*ptr=%d\n",ptr,*ptr);

int arr[]={1,2,3,4};

printf("arr=%p,arr=%p,*arr=%d\n",arr,arr,*arr);

int*p=arr;

printf("p=%p,*p=%d\n",p,*p);

p=p+1;

printf("p=%p,*p=%d\n",p,*p);

int**pp=&p;

printf("pp=%p,*pp=%p,**pp=%d\n",pp,*pp,**pp);

return 0;

}

二:

/*1.創建一个名力"pointer_array_experiment.c"的

C语言源文件。

2.定义一个整型数组"array",长度为5,并初始化

为1,3,5,7,9

3.定义一个指向整型数的指针"p",并让它指向数

组的第一个元素。

4.输出数组中每个元素的值。

5.循环遍历数组,使用指针p访问数组中的每个元素,并将每个元素的值加2。

6.再次输出数组中每个元素的值。

7.编译并运行程序,检查输出结果是否正确。*/

#include<stdio.h>

int main(){

int array[]={1,3,5,7,9};

int*p=array;

int i;

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

printf("%d ",array[i]);

}

printf("\n");

printf("%d,%d,%d,%d,%d\n",*p,*(p+1),*(p+2),*(p+3),*(p+4));

printf("%d,%d,%d,%d,%d\n",*p+2,*(p+1)+2,*(p+2)+2,*(p+3)+2,*(p+4)+2);

return 0;

}

三:

/*1. 编写一个C语言程序。

2. 在程序中声明一个整型变量和一个指向整型变量的指针变量。

3. 初始化这个整型变量和指针变量。

4. 输出这个整型变量和指针变量的地址。

5. 使用指针变量修改整型变量的值。

6. 输出修改后的整型变量的值。

7. 比较指针变量和整型变量的地址。

8. 使用指针变量交换两个整型变量的值。

9. 使用不使用指针变量的方法交换两个整型变量的值。*/

#include<stdio.h>

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

int c;

c=*a;

*a=*b;

*b=c;

}

int main(){

int a=4,b=5;

int*p=&b;

printf("&a=%p,p=%p\n",&a,p);

printf("修改后:*p=%d\n",*p-3);

fun(&a,&b);

printf("%d,%d\n",a,b);

return 0;

}

总结:

  1. 指针类型保存数据对象的首地址和数据对象所占用的存储空间大小;

  1. 指针类型的值就是目标数据对象的首地址,指针类型本身标记目标数据对象的空间大小;

  1. 取地址运算符&:可获取一个数据对象的首地址和所需存储的空间大小;

  1. 取值运算符*:可以根据指针中所存储的首地址和存储空间大小找到目标数据对象的值;

  1. 占位符%p:是指针类型专用的占位符,以十六进制显示;

  1. int *pn;

*(pn-1):指pn的首地址向前移动4个字节后所代表的数值;

*pn-1 :指*pn的值减一;

7.指针类型-指针类型=两首地址相减除以步长;

8.类型为void类型的指针只保存首地址,不保存存储空间大小,所以不能对void类型的指针取值,也不能进行与整型的加减法;

9.任意类型指针都可以直接赋值给void 型指针;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值