指针相关
程序员文章站
2022-03-11 22:31:24
...
指针
指针:变量存储在内存中某一个地址标识的存储空间中,在程序中,通过使用指针,获取变量地址。因此,在程序中输出指针的值为unsigned的整数。
指针变量:用来存放指针的变量。
&取地址运算符。
#include <stdio.h>
int main() {
int a = 12;
int *b = &a;
printf("%d\n",a);
printf("%d\n",&a);
printf("%d\n",b);
return 0;
}
输出:
12
6356744
6356744
指针与数组
数组名可以作为数组的首地址,比如数组int a[10],则a的值为a[0]的地址,a+2的值为a[2]的地址。
#include <stdio.h>
int main() {
int a[10] = {1,2,3,4,5};
printf("%d\n",sizeof(int));
printf("%d\n",a);
printf("%d\n",a+2);
printf("%d\n",*a);
printf("%d\n",*a+2);
return 0;
}
输出:
4
6356712
6356720
1
3
由于int是占四个字节存储空间,a[0]的存放地址是6356712,a[2]与之相隔两个int型数据,故地址为6356712+4*2 = 6536720
指针作为函数参数
通过指针将变量地址传入函数,可以直接修改变量的值。
常见的例子:
#include <stdio.h>
void swap(int a,int b){//此方式没能转换a与b的值
int temp = a;
a = b;
b = temp;
}
void p_swap(int *a,int *b){//此方式能够转换a与b的值
int x;
int *temp = &x;//声明指针时最好初始化
*temp = *a;
*a = *b;
*b = *temp;
free(temp);
}
int main() {
int a = 2,b = 5;
printf("before\t\ta = %d,b = %d\n",a,b);
swap(a,b);
printf("usual way\ta = %d,b = %d\n",a,b);
a = 2;
b = 5;
printf("before\t\ta = %d,b = %d\n",a,b);
p_swap(&a,&b);
printf("point way\ta = %d,b = %d",a,b);
return 0;
}
输出:
before a = 2,b = 5
usual way a = 2,b = 5
before a = 2,b = 5
point way a = 5,b = 2
推荐阅读
-
mac开发java的好处(mac搭建java开发环境的相关知识)
-
数据库Left join , Right Join, Inner Join 的相关内容,非常实用
-
JSP 相关对象的使用介绍
-
javascript asp教程 日期相关
-
深入SQL SERVER合并相关操作Union,Except,Intersect的详解
-
360wifi快传软件怎么遥控电脑进行相关操作 360wifi快传遥控电脑关机的方法
-
人人网怎么删除留言不让他人看到 人人网留言相关问题解答
-
php小偷相关截取函数备忘
-
Linux下时间设置的相关命令小结
-
基于Angular中ng-controller父子级嵌套的相关属性详解