C语言的一些问题

2018-03-10  本文已影响0人  贵族_4e67

1 变量,是内存地址的一个抽象名。在静态编译的程序中,所有的变量名都会在便宜的时候转换成内存地址。

2 结构体, 不管结构体的实例是什么 ,访问其成员其实是该结构体地址加上成员的偏移量。

3 数组 , 访问成员数组名其实得到的是成员相对于数组名的相对地址,而访问成员指针是指访问相对地址中的内容。
  所以对于数组char s[10] 来说 ,使用数组名 s与使用地址&s是一样的。比如这样一段代码:

char  s[10];
printf("print s is: %d\n",s);
printf("print &s is: %d\n",&s);

在我的机器上运行的结果是:


result

4 使用指针声明结构体的用处
 个人感觉是为了方便使用malloc函数开辟内存空间,因为malloc函数返回的是一个指针指向分配的空间。比如如下定义的一个链表结构体

typedef struct Nnode{
    int data;
    struct Nnode * next;
} PtrToNnode;

我们在声明空间的时候就可以使用

PtrToNnode * newNode = (PtrToNnode)malloc(sizeof(PtrToNnode);
上一篇 下一篇

猜你喜欢

热点阅读