C用语言中的数组与指针
来源:互联网 发布:极简装修 知乎 编辑:程序博客网 时间:2024/04/30 09:25
在C程序语言中 数组,指针和字符串常常被联系在一起
此处将讨论其三者之间的关系
先看下数组的声明
int b[] = {1,2,3,4,5,8,4,2};
取指针:
如果取其中下标为2的值
b[2]
如果取下标为2的值的指针
&b[2]
例子:
[root@CWG hc]# cat szzz.c
#include <stdio.h>
main()
{
int b[] = {1,2,3,4,5,8,4,2};
int *x, *y;
x = &b[3];
y = &b[4];
printf("*x = %p\t||\tx = %d\n", x, *x);
printf("*y = %p\t||\ty = %d\n", y, *y);
}
[root@CWG hc]# ./szzz
*x = 0x7fff2a230a0c || x = 4
*y = 0x7fff2a230a10 || y = 5
按指针偏移量取值
指针和数组的关系:
&b[0] 为数组b的第一个值的指针,也是b数组的初始指针
b数组的初始指针也是b数组的指针
例子:
[root@CWG hc]# cat szzz.c
#include <stdio.h>
main()
{
int b[] = {1,2,3,4,5,8,4,2};
int *x, *y;
x = &b[0];
printf("x = %p\t||\t*x = %d\n", x, *x);
printf("b = %p\t||\t*b = %d\n", b, *b);
}
[root@CWG hc]# ./szzz
x = 0x7fff71d67810 || *x = 1
b = 0x7fff71d67810 || *b = 1
偏移量:
[root@CWG hc]# cat szzz.c
#include <stdio.h>
main()
{
int b[] = {1,2,3,4,5,8,4,2};
int *x, *y;
x = &b[4]; //x是数组b的下标为4的值的指针
printf("x = %p\t||\t*x = %d\n", x, *x);
printf("b = %p\t||\t*b = %d\n", b+4, *(b+4)); //b+4,b是数组b的初始指针 b+4,则是b偏移4个单位, 也就是数组b的下标为4的数值的指针
}
[root@CWG hc]# ./szzz
x = 0x7fff7fa5ede0 || *x = 5 //b数组的第4个值的指针和指针所指的值
b = 0x7fff7fa5ede0 || *b = 5 //和x指针的结果一模一样
数组的指针偏移量,有数组的初始指针也就是数组的指针开始,下标增长1,则指针偏移+1,下标-1,则指针偏移同样-1
在所有类型的数组中都遵循这个规律!!!
################################
迷途小运维学习C程序语言随笔
作者:john
转载请注明出处
- C用语言中的数组与指针
- C語言中的static
- 解析C語言中的sizeof
- C 語言中的 sprintf() 函數
- C的数组与指针
- 【指针篇】C语言:指针与数组的区别,数组指针与指针数组的剖析。
- C 指向数组的指针,与存储指针的数组
- C语言的指针数组与数组指针关系
- C语言 数组指针与指针数组的探讨一
- C语言 数组指针与指针数组的探讨一
- C语言的指针数组与数组指针关系
- C中指针数组与数组指针的理解
- C语言中的指针数组与数组指针的理解
- c语言的指针数组与数组指针
- c中指针数组与数组指针的区别
- C数组与指针
- c 指针与数组
- C 数组与指针
- dojo(二):事件处理
- 程序员的谎谬之言还是至理名言?
- hdu 4404 Worms
- Java基础——动态绑定
- Scala Trait 的线性化
- C用语言中的数组与指针
- 送给程序员:最好的编程名言
- WINCE6 添加唯一的设备ID 用户不可修改
- 黑马程序员_IO流_3
- Linux vi学习笔记
- C/C++学习笔记(十)标准模板库STL和string
- 常量,顾名思义是一个常态的量值
- WebView侧滑出现白屏、页面加载闪白屏处理
- WPF 自定义窗口