动态char数组中第一个元素的内存

时间:2015-09-14 02:18:03

标签: c pointers dynamic-memory-allocation

我的数组定义如下

int buffSize = 80;
char* buff = (char*) malloc(sizeof(char) * buffSize);

首先,我认为&buff应该与&buff[0]相同,但显然,它不是!我在这里错过了什么吗? 该语句为这两个值打印两个不同的值:

    printf("COMPARE: buff=%u, buff[0]=%u\n", &buff, &buff[0]);

其次,我问的原因是因为我试图创建一个大缓冲区并且"手动"将其划分为与getline一起使用。 基本上,我想做这样的事情:

int byte_read, total_read = 0;
do
{
   read = getline(&buff[totalRead], buffSize, inFile); //where inFile is just a file handler
  totalRead += read;
}
while (byte_read > 0);

1 个答案:

答案 0 :(得分:4)

buff是一个指针,&buff是该指针的地址。另一方面,&buff[0]是指针指向的位置的地址,应该与buff具有相同的值。

总之,期望buff&buff[0]具有相同的价值。