C语言中指针与地址
来源:互联网 发布:如何下载mysql数据库 编辑:程序博客网 时间:2024/04/30 00:30
指针 内存指针 指向一个变量或者函数
变量也可以是整形,也可以是字符串也可以是数组
整形的指针声明时必须也是用int声明,指向什么类型的变量,就声明成什么类型的指针。
用&可以取一个变量的指针
例子:
[root@CWG hc]# cat zz1.c
#include <stdio.h>
main()
{
int a = 5;
int *p; //声明一个指向int类型变量的指针p
p = &a; //p是指向a的指针 &a取a变量的内存地址 赋给p
fprintf(stdout, "a = %d\n*p = %p\n", *p, p); //由于p是指向int a的指针,所以取p地址的值,打印出来的结果应该是int a, %p是打印内存指针,打印出p的值也就是一个内存地址
}
[root@CWG hc]# ./zz1
a = 5 //打印出来的是int a的值
*p = 0x7fffab01ad24 //这个内存地址是指向int a变量的一个内存地址
用*可以取出指针指向的变量
例子:
[root@CWG hc]# cat zz1.c
#include <stdio.h>
main()
{
int a = 5;
int *p;
p = &a; //p指向int a的值 此处的p指向5
int c; //声明一个整形c变量
c = *p + 10; //用*取p指针的值,然后再加10后 将结果赋值给int c
fprintf(stdout, "c = %d\n", c);
}
[root@CWG hc]# ./zz1
c = 15
********************************************************
注意:void类型的指针可以存放指向任何类型的指针
********************************************************
++*ip 等价于 (*ip)++
赋值:指针等于指针
例子:
[root@CWG hc]# cat zz1.c
#include <stdio.h>
main()
{
int a = 5;
int b = 7;
int *p;
int *x;
p = &a; //p等于a的指针 指向int a的值
x = &b; //x等于b的指针 执行int b的值
fprintf(stdout,"*p = %d || p = %p\n", *p, p);
fprintf(stdout,"*x = %d || x = %p\n", *x, x);
p = x; //将指针x的指向赋值给指针p
printf("P = X\n");
fprintf(stdout,"*p = %d || p = %p\n", *p, p);
fprintf(stdout,"*x = %d || x = %p\n", *x, x);
}
[root@CWG hc]# ./zz1
*p = 5 || p = 0x7fffb2e7d7fc
*x = 7 || x = 0x7fffb2e7d7f8
P = X //可见当p=x执行后输出的值如下
*p = 7 || p = 0x7fffb2e7d7f8 //p的指针等于了x,值随即也等于了x,x是指向int b的指针,那么p的指针等于x的指针了,则p指针执行的值也是x了
*x = 7 || x = 0x7fffb2e7d7f8
将a指针的值付给b指针
例子:
[root@CWG hc]# cat zz1.c
#include <stdio.h>
main()
{
int a = 5;
int b = 7;
int *p;
int *x;
p = &a; //p等于a的指针 指向int a的值
x = &b; //x等于b的指针 执行int b的值
fprintf(stdout,"*p = %d || p = %p\n", *p, p);
fprintf(stdout,"*x = %d || x = %p\n", *x, x);
*p = *x; //将指针x的值赋给指针p
printf("*P = *X\n");
fprintf(stdout,"*p = %d || p = %p\n", *p, p);
fprintf(stdout,"*x = %d || x = %p\n", *x, x);
}
[root@CWG hc]# ./zz1
*p = 5 || p = 0x7fffa8996cac
*x = 7 || x = 0x7fffa8996ca8
*P = *X //可见先用*取出x的值赋值给*p,则效果如下所示 地址指向没变,只是值变了
*p = 7 || p = 0x7fffa8996cac
*x = 7 || x = 0x7fffa8996ca8
############################################
迷途小运维学习C程序语言随笔
作者:john
转载请注明出处
- C语言中指针与地址
- C 语言指针与地址
- c 语言 指针 与地址
- [编程语言][C语言]指针与地址
- C语言之指针与地址
- c语言中的指针与地址
- C语言的内存与地址(C和指针)
- 【C】 指针与地址
- c语言中地址加法与减法
- C 语言指针与汇编地址(一)
- C语言学习篇-8地址与指针
- c语言中数组中的地址和指针的关系
- c语言中const 类型变量地址赋值给指针。
- c语言中指针与数组名
- C语言中数组与指针辨析
- 浅析C语言中指针与数组
- 单片机中C语言指针与变量
- C语言中指针与java
- 点评、有道、雅虎校招笔面试题
- Windows Phone7 XNA 使用中文 很轻松简单~
- 试证某曲面上任何点处的切平面在各坐标轴上的截距之和等于a
- Embedded Real-Time OS for Avionics
- CAS认证
- C语言中指针与地址
- 小议CslaIdentity的安全性
- How to Package Python Scripts
- 编译Rob Hess基于OpenCV的SIFT算法的C语言实现
- 暴风影音笔试题 2014 武汉站
- 房间安排
- C#中字符编码:sql语句中包含中文字符转换为utf8编码
- nyoj 2-括号匹配
- [BBC纪录片][2009][自然界最惊异的事件][Nature's.Most.Amazing.Events][中英字幕][蓝光720P高清][全6集][17.77GB]