我需要更好地理解指针实际指向的内容

时间:2014-10-27 03:56:45

标签: c pointers

指针的实际值是什么:

char *ptr;

它指向一个内存地址,对吗?

4 个答案:

答案 0 :(得分:2)

尚未;它没有初始化。

您要问的是询问int i;所指的号码。

答案 1 :(得分:1)

我会尝试以一种简单的方式解释,(对不起,如果我的英语不够神,我正在学习) 假设您有一系列字符:

char a[5];

然后你想创建一个指向第一个元素地址的指针:

char *p = &a[0]; 

现在,因为数组的名称是该位置的同义词 初始元素,您可以重写为以下语句:

char *p = a;

现在这里是魔术发生的地方,因为前一个字符指针指向第一个元素的地址,你可以做如下的事情: 而不是从[i]中获取第i个元素,你可以移动指针' i'地点以引用第i个位置中包含的值的地址,然后获取它的值:

char value = *(a + i);

字体(C编程语言第2版,第5章)

答案 2 :(得分:1)

char *ptr;

在初始化之前,它没有指向任何内存地址; 但你可以用它来指出一个地址。 假设,

int i=0;

我在记忆中有一个地址。如果它成为0xFFFF0那么当你写

ptr=&i; 

然后你的指针指向地址0xFFFF0

现在假设,

int array[5]={0};是一个数组。

然后如果你写 -

ptr=array;

然后ptr指向数组的起始地址,因为数组名称是一个地址。

答案 3 :(得分:0)

是的,它指向变量的地址。

如果变量在函数内声明,则变量可能在堆栈上,如果在顶层声明,则变量可能在RAM的顶部。

正如其他答案所指出的那样,你还没有指出任何东西,所以取消引用指针可能会导致分段错误。

您需要执行类似

的操作
char ch;
char *ptr = &ch;