char *sample = "String Value";
&sample
是指向指针"String Value"
的指针。
上述语句是否正确?
如果上述语句正确,当我的声明为以下内容时,等效于&sample
是什么?
char sample[] = "String Value"
char *sample = "String Value";
&sample
是指向指针"String Value"
的指针。
上述语句是否正确?
如果上述语句正确,当我的声明为以下内容时,等效于&sample
是什么?
char sample[] = "String Value"
sample
的char *
(指向char的指针),另一个是包含字符串字符的13个未命名的char数组。在这种情况下,&sample
给出了对象sample
的地址,该地址是指向指针的指针 - 因此是指向指针的指针。sample
的13个字符的数组,用字符串的字符进行初始化。在这种情况下,&sample
给出了对象sample
的地址 - 因此是指向包含13个字符的数组的指针。&sample
相当的内容,就是指向指针的指针值。这是因为没有指向char的指针值可以获取其地址。只有数组存在。指针为程序员提供了巨大的能力和灵活性,但如果不正确处理,它们可能会导致制造商使用问题。考虑以下使用指针以防止错误的预防措施。我们应该确保在程序中知道每个指针指向哪里。以下是一些有用的常见错误和一般观察。
*ptr ++、*p []、(ptr).member
&
取地址时,有一种情况不能将数组名视为指针,反之亦然。 - caf&sample是指向“字符串值”的指针地址。
对于第二个例子,由于没有后面的下标,数组名称被解释为指向数组初始元素的指针,这意味着
sample
和
&sample[0]
都是一样的,因此&sample也是指向字符串的指针地址。
&sample
不是指针的地址;它是数组的地址,与指针的地址无法互换。 - cafsample
是一个数组。在某些情况下,它会自动衰减为指针,但区别很重要。(例如,sizeof sample
和 sizeof &sample[0]
将不同。) - jamesdlin