-1

我正在做一些研究以更好地理解 C 中的指针,但我很难理解这些:'struct* A' 是结构上的指针吗?那么什么是'struct *A'?而且我看到有人写'int const * a',这是什么意思?

4

4 回答 4

6

struc* Astruct *A有什么区别struct * A

他们是等价的(错了)。C 是一种自由格式的语言,空格无关紧要。

struct* A结构上的指针吗?

不,它(仍然)是一个语法错误(struct是一个保留关键字)。如果您在那里替换一个有效的结构名称,那么它将是一个,是的。

int const * a, 这是什么意思?

这声明a为指向const int.

于 2013-04-12T21:25:37.987 回答
2

struct *A,都是一样的,struct* A而且struct * A都是错误的,因为你错过了结构的名字。

int const *a与 a 相同,const int *a表示指向 const 整数的指针。

Aside:int * const a是不同的,它意味着 const 指针和一个非 const 整数。

于 2013-04-12T21:25:37.860 回答
0

它们都是相同的。

struct *A= struct* A= struct*A= struct * A

于 2013-04-12T21:25:12.263 回答
0

正如其他人已经提到的那样,struct * A等等都是不正确但相同的。

但是,可以通过以下方式创建结构和指针:

/* Structure definition. */
struct Date
{
    int month;
    int day;
    int year;
};

/* Declaring the structure of type Date named today. */
struct Date today;

/* Declaring a pointer to a Date structure (named procrastinate). */
struct Date * procrastinate;

/* The pointer 'procrastinate' now points to the structure 'today' */
procrastinate = &today;

另外,对于关于声明指针的不同方式的第二个问题,“什么是int const * a?”,这是我改编自Stephen G. Kochan 的 Programming in C的一个示例:

char my_char = 'X';

/* This pointer will always point to my_char. */
char * const constant_pointer_to_char = &my_char;
/* This pointer will never change the value of my_char.   */  
const char * pointer_to_a_constant_char = &my_char;
/* This pointer will always point to my_char and never change its value. */
const char * const constant_ptr_to_constant_char = &my_char; 

当我第一次开始时,我会发现从右到左阅读定义很有帮助,用“只读”这个词代替“const”。例如,在最后一个指针中,我会简单地说,“constant_ptr_to_constant_char 是指向只读字符的只读指针”。在您上面的问题中,int const * a您可以说,“'a' 是指向只读 int 的指针”。看起来很愚蠢,但它确实有效。

有一些变化,但是当你遇到它们时,你可以通过在这个网站上搜索找到更多的例子。希望有帮助!

于 2013-04-12T23:36:19.863 回答