C内存地址问题

问题描述:

int intarray[256] = {0, 11, 12, 13, 14, 15, 16, 17, 18, 19}; 
int* ptrA; 
ptrA = &intarray[0]; 

如果pta是局部变量的内容,它是intarray [0]的地址,那么pta +5是什么意思?C内存地址问题

任何人都可以解释吗?谢谢

它指向第六个元素。指针添加通过目标类型的大小进行隐式乘法。

+0

sizeof int不等于1 ...:'pta + 5!=&pta [5]' – Phong 2011-03-08 07:33:10

+0

否@Phong。正如西蒙所说 - 添加到指针需要考虑sizeof()。 – Dre 2011-03-08 07:34:54

+1

@Phong,ptrA是一个整型指针(int *)因此当你说'ptrA + 5'时,它实际上意味着'ptrA + 5 * sizeof(int)' – 2011-03-08 07:36:22

int intarray[] = {0,11,12,13,14,15,...,19}; 
int* ptrA = intarray; 

int v = *(ptrA + 5); // v == 15