C中指针与开辟空间有关问题【初学者求教】

C中指针与开辟空间问题【菜鸟求教】
------望高手解答我问题-------

作为菜鸟,我在说出问题之前,希望各位看看我的思路,因为我始终认为思路才是最重要的。
可惜我是个菜鸟,水平一般,在自认为还好的代码里磨打了这么久,最终还是解决不了问题,需要各位高手的帮助。

-------------
下面,进入正题
-------------

--->我的问题来由与思路:

在《C Traps and pitfalls》里,有这样一段话:“给一个指针加上一个整数,与给该指针的二进制表示加上同样的整数,两者的含义截然不同。如果ip(ip是整数,本菜鸟注)指向一个整数,那么ip+1指向的是计算机内存中的下一个整数,在大多数现代计算机中,他都不同于ip所指向的下一个内存位置”

我看到这一段时,是很有感觉的,尤其是“下一个”这几个字!
于是,我有了一个想法,利用指针构成一个动态的存储结构,存储数据!
这是我刚开始写的代码,请看:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
  int *dynamicArray;
  int *p;
  int *temp;//临时寻址
  int a;//将输入的存入动态结构中
  int i=0;//自增

  printf("输入数据,当你输入0的时候,数据输入就结束了!\n请输入:");
  scanf("%d",&a);
  dynamicArray =p =&a;
  while(a)
  {
  p++;//我想法的关键点就这里
  printf("继续输入:");
  scanf("%d",&a);
  *p =a;
  if( NULL == p )//这一步可不要,但我为了安全起见还是加上了
  { printf("指向错误,程序结束!");exit(0);}
  }
  //输出
  for(i=0, temp =dynamicArray; temp <= p; temp++, i++ )
  if( 0 == (i+1)%4 )//每4个数转行一次
  printf("%d \n",*temp);
  else
  printf("%d ",*temp);
  system("pause");
  return 0;
}
------------
写完这个程序,编译,重建,调试。
结果:出错!
我第一个问题就这么来了,

问题1:我想,根据<C Traps and Pitfalls>的讲法,每一次p++都正好指向下一个整数,那么我就利用这一点,不断让p指向
  下一个,再利用 *p =a“强行”“占领”p所指向的空间,把原有的数“冲走”,让a的值进来,然后要输出时,直接
  temp从头开始搜索,也一个个搜索过来。为甚错了?
  我自己反思了下,可能是p指向的地方本身没有内存空间。但想想有反驳了自己,如果如此的话,怎能指向?
  就这样,我茫然了,望指教!

我显然没有因为这个代码段落的错误而放弃我原有的目的:利用指针构成一个动态的存储结构,存储数据。
于是,我想到了malloc。
于是,我的主体代码做了个变化
代码(只给出关键),请看代码:
scanf("%d",&a);
dynamicArray =p =&a;
printf("dynamicArray=%d,p=%d,&a=%d\n\n",dynamicArray,p,&a);
while(a)//a为0结束
{
p++;
p =(int *)malloc(sizeof(int));
//开辟空间失败,我本人不知道空间开辟失败返回多少,姑且以为是NULL
if( NULL == p )
{
printf("你输入数据后,开辟的下一个空间,开辟失败了!\n");
exit(0);
}
scanf("%d",&a);
*p =a;
}
这一次和上一次的唯一区别就在于增加了malloc,开辟一个空间,然后让p指向这个地址,然后再开辟,再指向。
但很快,不用调试,我自己就发现有点不对的苗头!
果然,调试,出错!

问题2:我知道p指向了malloc开辟的地址,这样就不能满足 <C Traps and pitfalls>的情况,这样的话,构成动态的理论基
  础也就不存在了!
  可这样的结果显然是我,我的目的成了泡影。
  那么,我给怎么利用malloc来构造?
  或者,我本来就是错的?
  望明示高手的想法!

注:数据结构里的不讲,就算讲要按照我的条件,根据<C Traps and pitfalls>的那个话来分析,谢谢!毕竟,我就是从
  这里开始一路错下去的!
-----------------------------------------------

 求 思路,望高手提供思想!

 毕竟,我还只是个江西东华理工的一个学生!可是,我都读了2年软件了,却只是这个水平(大1、2(上学期)都荒废了)。
 惭愧的很啊!

 望高手提供思想!
 感激不尽!
【注:所讲不论难易,因为我相信我终究是会明白的!】

------解决方案--------------------
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

《深入解析Windows操作系统-Windows Internals》