指针的实际值是什么:
char *ptr;
它指向一个内存地址,对吗?
答案 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;