指针的运算
来源:互联网 发布:森海塞尔淘宝哪家 编辑:程序博客网 时间:2024/06/06 00:11
赋值运算
p=&a; //将变量地址赋值给指针
p=array; //将数组地址赋值给指针
p=&array[i]; //将数组元素赋值给指针
p1=p2; // 将指针地址赋值给指针
# include <stdio.h>//引用函数库void main(){ int a = 10;//变量赋值,此时a变量的地址是&a int *p1 = &a;//将a变量的地址赋值给p1 int *p2 = p1;//将p1的值赋值给p2 printf("%x %x %x",&a,p1,p2); printf("\n%d %d %d",a,*p1,*p2);}f0889414 f0889414 f088941410 10 10
数组中的指针运算
# include <stdio.h>//引用函数库void main(){ int a[5] = {1,2,3,4,5}; printf("%x\n",a);//打印数组的首地址 for (int i = 0;i<5;i++){//下标循环 //打印数组元素的值 printf("%d,%d\n",a[i],*(a+i));//a是一个地址值,a+1表示地址值前进一个该类型大小的字节 //打印数组元素的地址 printf("%x,%x\n",&a[i],a+i); } for (int *p =a;p<a+5;p++){//指针循环 printf("\n%d,%x", *p,p); }}
指针的自增和自减运算只有在数组中才有意义,因为数组中的元素类型是一定的,就是指针的+1前进的长度是一定的。
这也解释了为什么数组的类型是要求一致的
指针++就是按照一个指针类型的大小,前进一个类型的大小,如果是int就前进四个字节
指针与多维数组
# include <stdio.h>//引用函数库# include <stdlib.h>void main(){ int a[3][3] = {1,2,3,4,5,6,7,8,9}; printf("%x, %x, %x",&a,a,*a);//他们不是同一个指针虽然打印出来的首地址一样,但是长度不同 //&a是数组地址,长度4*9个字节,a是行地址,长度4*3字节,*a元素地址,长度4*1字节 printf("\n%d,%d,%d\n",sizeof(*&a),sizeof(*a),sizeof(**a)); for(int i =0;i<3;i++){ for(int j =0;j<3;j++){ printf("%d,%x ",a[i][j],&a[i][j]); } printf("\n"); } printf("\n %x %x %x",*a,*a+1,*a+2);//分别代表第0行的第一/二/三个元素,地址每次前进4*1个字节 printf("\n %x %x %x",a,a+1,a+2);//分别代表第0行,第1行,第2行的地址,地址每次前进4*3个字节}e880cca0, e880cca0, e880cca036,12,41,e880cca0 2,e880cca4 3,e880cca8 4,e880ccac 5,e880ccb0 6,e880ccb4 7,e880ccb8 8,e880ccbc 9,e880ccc0 e880cca0 e880cca4 e880cca8 e880cca0 e880ccac e880ccb8
a[i][j]=*(*(a+i)+j)
&a[i][j]=*(a+i)+j
a[i]=*(a+i)
&a[i]=a+i
阅读全文
0 0
- 指针变量的运算
- 指针的算术运算
- 指针的运算
- 指针的加减运算
- 指针的算术运算
- 指针的运算
- 指针的运算总结
- 指针的运算
- 指针的运算
- 指针的重要运算
- 指针变量的运算
- 指针变量的运算
- 指针的基本运算
- 指针的算术运算
- 指针的算术运算
- 指针的算术运算
- 指针的算术运算
- 指针的运算
- 基于配置的springMVC图片上传
- oracle两表连接多个结果集合成一列
- 页面找不到
- spring security rememb…
- 上传图片奇葩错
- 指针的运算
- 接口测试基础-1-什么是接口测试
- spring security用户退出了,…
- 把用户名和密码保存到 cookie里,…
- 大体了解HTML5
- HTML5视频了解笔记
- convas的简单了解
- 智能表单应用的了解
- Python3爬虫之二网页解析【爬取自己CSDN博客信息】