/*   char str[10]="123154";
    const char* str1="axef";
    char *ptr=str;
    printf("%x\t%x",++ptr,str++);
    printf("%c\n",*str1++);//str是指针,有自己固定的地址,所以不可对其进行++或者--操作
 
// 疑问:数组名什么不能当作左值使用?
    数组名是一个指针常量,相当于int ptr[4]...ptr<=>int * const ptr~~!!!所以不能当作左值使用,不能赋值,不能修改,
 不能进行++、--操作
 */

 

  /* int *ptr=(int *)malloc(sizeof(int)*4);
   ptr[0]=1;
   ptr[1]=2;
   ptr[2]=3;
   ptr[3]=4;
   printf("%d\n",ptr);
   printf("%d %d %d %d\n",ptr[0],ptr[1],ptr[2],ptr[3]);
   ptr=(int *)realloc(ptr,sizeof(int)*5);
   printf("%d\t%d\n",ptr,&(ptr[4]));
   printf("%d %d %d %d\n",ptr[0],ptr[1],ptr[2],ptr[3]);realloc不会改变原来内存中短部分的数据*/

  
   /* int const str=10;
    int *ptr=&str;
    *ptr=65;
    str=145;C中可以通过指针修改const成员*/

 /*int arr[8]={1,2,3,4,5,6,7,8},i;
  for(i=0;i<8;i++)
  printf("%d\t\n",arr[i]);
  memcpy((void *) restrict arr,(void *) restrict (&arr[3]),8);
  for(i=0;i<8;i++)
  printf("%d\t\n",arr[i]);  memcpy允许内存地址交叉拷贝*/

现在仍有疑问

int *p=(int *)malloc(sizeof(int));

这个p在栈中有它的地址~~因为它是一个变量~~

但是现在这个p指向的是我再堆中分配的一块内存~~我怎样才能得到这个p在栈中的地址呢??


发表于 @ 2009年07月31日 11:21:00