指针与链表

       指针是一个存储计算机内存地址的变量。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。

根据出现的位置不同,操作符 * 既可以用来声明一个指针变量,也可以用作指针的取值。当用在声明一个变量时,*表示这里声明了一个指针。其它情况用到*表示指针的取值。

&是地址操作符,用来引用一个内存地址。通过在变量名字前使用&操作符,我们可以得到该变量的内存地址。

这里可以把指针、引用和值的关系类比为信封、邮箱地址和房子。一个指针就好像是一个信封,我们可以在上面填写邮寄地址。一个引用(地址)就像是一个邮件地址,它是实际的地址。取值就像是地址对应的房子。我们可以把信封上的地址擦掉,写上另外一个我们想要的地址,但这个行为对房子没有任何影响。

       指针和数组

      C语言的数组表示一段连续的内存空间,用来存储多个特定类型的对象。与之相反,指针用来存储单个内存地址。数组和指针不是同一种结构因此不可以互相转换。而数组变量指向了数组的第一个元素的内存地址。

一个数组变量是一个常量。即使指针变量指向同样的地址或者一个不同的数组,也不能把指针赋值给数组变量。也不可以将一个数组变量赋值给另一个数组。然而,可以把一个数组变量赋值给指针,这一点似乎让人感到费解。把数组变量赋值给指针时,实际上是把指向数组第一个元素的地址赋给指针。

#include<stdio.h>

int main()

{

         int myarray[4] = {1,2,3,0};

    int *ptr = myarray;

    printf("ptr地址=%ld,值*ptr=%d\n", ptr,*ptr);

    ptr++;

    printf("ptr地址=%ld,值*ptr=%d\n", ptr,*ptr);

    ptr++;

    printf("ptr地址=%ld,值*ptr=%d\n", ptr,*ptr);

    ptr++;

    printf("ptr地址=%ld,值*ptr=%d\n", ptr,*ptr);

}

 

       以下是对一小部分的信息管理进行了修改:

/新建一个节点;

    u = new_node(u); 

    printf("\n请输入您要加入的职员的信息:\n"); 

    printf("\n姓名: "); 

    scanf("%s",u->name); 

    printf("\n年龄: "); 

    scanf("%s",u->classs); 

    printf("\n电话: "); 

    scanf("%s",u->number); 

    printf("\n邮箱、MSN、QQ: "); 

   scanf("%d%d%d",&u->score.chinese,&u->score.math,&u->score.english); 

//采用头插法将新节点的尾指针指向第二个节点(掰开)

    u->next = head->next; 

//将新节点放在头节点后面;

    head->next = u; 

    printf("\n--->添加成功!\n"); 

        慢慢对C语言有了更多的了解,就是在有些细节部分上还是掌握的不太熟练,我回继续在网上查找并学习一些相关资料,希望对C语言的学习理解能有些帮助。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值