STM32/STM8技术论坛
400万+工程师在用
华为|鸿蒙开发者日
直播报名
400万+工程师在用
华为|鸿蒙开发者日
直播报名

wxs732

9年用户 163经验值
擅长:可编程逻辑 连接器 电源/新能源 连接器 模拟技术 连接器 测量仪表 连接器 EMC/EMI设计 连接器 嵌入式技术 连接器 连接器 存储技术 连接器 连接器 接口/总线/驱动 连接器 处理器/DSP 连接器 光电显示 连接器 控制/MCU 连接器 EDA/IC设计 连接器 RF/无线 连接器 MEMS/传感技术 连接器
私信 关注
[问答]

用指针输出数组的内容 求高手指导

2016-12-22 13:58

#include <iostream>
#include <string.h>

using namespace std;
#define EOD  ('\0')
int main()
{
        int a[] = {10,15,56,89,101,854,66};
        int *p = &a[0];  //把数组首地址给指针
        //
        int i;

        for(int j=0;j<7;j++)  //输出数组数值正常
        //for(;*p!='\0';*p++)  //输出数组不正常 多输出后面无效数值
    //for(;p!='\0';p++)  //此方法不行直接导致电脑无限制输出
    // for(;*p!='\0';p++)   //不行和第二种一样
    //while(*p)      //不行和第二种方法一样
        //do   while 不行

        //while(*p!='\0')  //不行 和上面的方法一样
  // while(p-a<sizeof(a))   
        //此方法更不靠谱 输出错误

     i = sizeof(a)/sizeof(a[0]);  //这种方法正确
         while(p-a<i)
        //for(;*p++!='\0';)
        {
        //        cout<<p<<"\t";  //输出p的地址
                cout<<*p<<endl;
                *p++;
        }//while(*p!='\0');  //do while 不行
        system("pause");
        return 0;
}

/*
试了好几种方法都无法输出,有能输出的在后面注释

*/

回帖(3)

曹操

2016-12-23 13:29:32
int a[] = {10,15,56,89,101,854,66};
        int *p ;        p=a;  //把数组首地址给指针
  while(*p)
{

p++;

}

梅梦醒

2017-1-5 12:51:42
你要区别输出字符串和输出数值,输出字符串才用到'\0',输出数值用‘\0’肯定会出错的

刘志刚

2017-1-6 12:03:51
完全不懂

更多回帖

打开APP