2014-10-27 25 views

回答

1

我会尽量用简单的方式来解释,(对不起,如果我的英语不是神不够我正在学习) 让说你有一个字符数组:

char a[5]; 

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

char *p = &a[0]; 

既然对数组的名称是 初始元素的位置,您可以改写为下面的语句的代名词:

char *p = a; 

现在这里是神奇的发生,作为前一个字符指针指向你可以做的第一个元素的地址如下: 而不是从[i]中获取'i'个元素,你可以移动指针'i'来引用地址中包含的值'第i'位然后得到它的值:

char value = *(a + i);

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

2

尚未;它未初始化。

你在问什么就像问什么int i;指的是数字。

0

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

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

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

你需要做这样的事情

char ch; 
char *ptr = &ch; 
1
char *ptr; 

直到它被初始化它不指向任何存储器地址; 但是你可以用它来指向一个地址。 假设,

int i=0; 

i具有在存储器中的地址。如果它成为0xFFFF0然后当你写

ptr=&i; 

然后将鼠标指针指向地址0xFFFF0

现在假设,

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

然后如果你为写

ptr=array; 

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

相关问题