C语言--指针和一维数组
#include <stdio.h>
//指针运算
int main(int argc, const char *argv[])
{
short a = 10;
short *p = &a;
printf("&a = %p
", &a);//输出变量的的内存地址 &a = 0028FF46
printf("p = %p
", p); //输出指针变量p p = 0028FF46
printf("p+1 = %p
", p+1); //把指针变量向前1个单位 p+1 = 0028FF48
printf("p+2 = %p
", p+2); //把指针 变量向前2个单位 p+2 = 0028FF4A
printf("p+3 = %p
", p+3); //把指针 变量向前3个单位 p+3 = 0028FF4C
return 0;
}
#include <stdio.h>
// 一维数组和指针
int main(int argc, const char *argv[])
{
int a[5] = {0,1,2,3,4};
int *p = &a[1]; //获取数组第二个元素的 内存地址 赋给指针变量p
int i;
//[] * 为取值 ()&为取地址 数组变量和指针变量 不带括号则默认取地址
printf("a[2] = %d
",a[2]); //输出数组的第三个元素 2
printf("*(a+2) = %d
",*(a+2)); //把指针a向前移动两个单位 并且取值 ,数组变量a默认指向数组的第一个元素 2
printf("*(p+1) = %d
",*(p+1));//把指针p向前移动一个单位 取值 2
printf("p[1] = %d
",p[1]); //把指针p向前移动一个单位 2
printf("a[2] = %p
",&a[2]);//用数组变量获取数组第三个元素的地址 0028FF28
printf("*(a+2) = %p
",&*(a+2));//用数组变量获取数组第三个元素的地址 后取值再获取地址 0028FF28
printf("*(p+1) = %p
",&*(p+1));//把指针变量向前移动一个单位 取值 再获取内存地址 0028FF28
printf("p[1] = %p
",&p[1]); ////把指针变量向前移动一个单位 取值 再获取内存地址 0028FF28
printf("a+2 = %p
",a+2); // 0028FF28
printf("p+1 = %p
",p+1); // 0028FF28
return 0;
}声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 面试题之数组指针和指针数组的区别
- 下一篇: c++ 一维数组与指针
