有关c语言指针的问题

时间:2010-06-03 04:12:07

标签: c

char *sample = "String Value";

&sample是指向"String Value"

指针的指针

是上述陈述吗?

如果上述陈述正确,如果我的声明是

,则等同于&sample
char sample[] = "String Value"

5 个答案:

答案 0 :(得分:6)

在第一个中,有两个对象被创建。

一个是名为char *的{​​{1}}(指向字符的指针),另一个是包含字符串字符的13个字符的未命名数组。在这种情况下,sample给出了对象&sample的地址,它是指向char的指针的地址 - 所以,指向指向char的指针。

在第二个例子中,只创建了一个对象;一个由13个字符组成的数组,称为sample,用字符串的字符初始化。在这种情况下,sample给出了对象&sample的地址 - 所以,指向13个数组的指针。

在第二个例子中,第一个例子中没有“等价”到sample,指向指向char的指针值。这是因为 没有指向char的地址的指针。只有数组。

答案 1 :(得分:0)

虽然指针为程序员提供了巨大的功能和灵活性,但如果处理不当,他们可能会使用原因制造商。考虑以下预先使用指针来防止错误。我们应该确保我们知道每个指针指向程序的位置。以下是一些可能有用的常规观察和常见错误。 *ptr++, *p[],(ptr).member

答案 2 :(得分:0)

在第一部分中,& sample 将返回创建的'sample'指针的地址,在第二种情况下,将返回作为object创建的字符串的起始地址。

答案 3 :(得分:-1)

在C数组中,指针或多或少是可互换的。您可以将数组名称视为指针,类似指针就是数组名称。

如果你取一个指针的地址(&),你当然会得到指向指针的指针。

答案 4 :(得分:-2)

& sample是指向“String Value”的指针的地址。

对于第二个例子,由于未跟下标的数组名称被解释为指向数组初始元素的指针,这意味着

sample

&sample[0]

是相同的,因此& sample也是指向字符串的指针的地址。