指针分类型&指针与数组

## 指针分类型&指针与数组
指针练习程序

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int *p;// 只能存放整数的地址
    char *p2; // 存放字符数据的地址
    
    int a = 10;
    char c = 'A';
      
    p = &a;// p = &c 判断计算机的大小端
    p2 = &c;
    
    printf("a = %d \n",*p); // 1.指针与整数
    printf("c = %c \n",*p2);// 2.指针与字符
    
    //指针++的问题
    printf("a 的地址打印;%p\n",p);
     printf("a 的地址++打印;%p\n",++p);// 整数型指针++ 地址连续,一个整型变量占用四个字节
    printf("c 的地址打印;%p\n",p2);    // 字符型指针++ 地址连续,一个字符型变量占用一个字节
     printf("c 的地址++打印;%p\n",++p2);
     
    int array[3] = {1,2,3};  // 数组,关心的是数组的首地址 两种表示方式;1.数组名 = 地址 2.第一个元素的地址 
    printf("第一个元素的地址%p \n",&array[0]);
    printf("第二个元素的地址%p \n",&array[1]);
    printf("第三个元素的地址%p \n",&array[2]); 
    int i;
    for(i=0;i<3;i++){
        printf("%d\n",array[i]); 
    }
    
    int *parray;
    parray = &array[0]; // 指针访问数组
   /* printf("第一个元素的地址%p \n",parray++);
    printf("第二个元素的地址%p \n",parray++);
    printf("第三个元素的地址%p \n",parray);
    */
    for(i=0;i<3;i++){
        printf("%d\n",*parray); 
        parray++;
    }
    
	system("pause");
	return 0;
}

1.指针分类型

int *p;// 只能存放整数的地址
    char *p2; // 存放字符数据的地址
    
    int a = 10;
    char c = 'A';
      
    p = &a;// p = &c 判断计算机的大小端
    p2 = &c;
    
    printf("a = %d \n",*p); // 1.指针与整数
    printf("c = %c \n",*p2);// 2.指针与字符

1.整型数据行指针
2.字符型数据指针

2.指针++问题

//指针++的问题
    printf("a 的地址打印;%p\n",p);
     printf("a 的地址++打印;%p\n",++p);// 整数型指针++ 地址连续,一个整型变量占用四个字节
    printf("c 的地址打印;%p\n",p2);    // 字符型指针++ 地址连续,一个字符型变量占用一个字节
     printf("c 的地址++打印;%p\n",++p2);

指针++根据类型不同,偏移值也不同
整数型指针++ 地址连续,一个整型变量占用四个字节
字符型指针++ 地址连续,一个字符型变量占用一个字节

3.指针与数组

int array[3] = {1,2,3};  // 数组,关心的是数组的首地址 两种表示方式;1.数组名 = 地址 2.第一个元素的地址 
    printf("第一个元素的地址%p \n",&array[0]);
    printf("第二个元素的地址%p \n",&array[1]);
    printf("第三个元素的地址%p \n",&array[2]); 
    int i;
    for(i=0;i<3;i++){
        printf("%d\n",array[i]); 
    }
    
    int *parray;
    parray = &array[0]; // 指针访问数组
   /* printf("第一个元素的地址%p \n",parray++);
    printf("第二个元素的地址%p \n",parray++);
    printf("第三个元素的地址%p \n",parray);
    */
    for(i=0;i<3;i++){
        printf("%d\n",*parray); 
        parray++;
    }

指针跟数组;
1.如何让指针指向数组
2.数组关心首地址
3.(1.)数组名表示首地址
int array[3];
int *p;
p = array;
(2.)第一个元素的地址表示首地址
int array[3];
int *p;
p = &array[0]

注意; 指针偏移的位置不要超出数组(超出的结果就是看到乱码)

运行结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王 -挺忙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值