/* 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
浙公网安备 33010602011771号