关于指针赋值给指针的问题 结构体指针赋值

刚开始看OSTaskDel (INT8U prio)这个任务删除函数时,里面的一段代码有点蹊跷。

if (ptcb->OSTC————BPrev == (OS_TCB *)0)//任务块双向链接表的前链接是否Null

{

ptcb->OSTCBNext->OSTCBPrev= (OS_TCB*)0;//删除该任务的任务控制块OS_TCB
OSTCBList= ptcb->OSTCBNext; //链接表指向后一个链接
}

else

{

ptcb->OSTCBPrev->OSTCBNext= ptcb->OSTCBNext; // ?
ptcb->OSTCBNext->OSTCBPrev= ptcb->OSTCBPrev; // ?

}

先看一个例子

#include <stdio.h>

#include<stdlib.h>

int main(int argc, char *argv[])

{

int * i,* j,a[4]={1,2,3,4};

i = a;// i 内容存放a 这个地址,注意,不是把a

//里面存放的内容直接存入i内容里

j = i;// j 内容存放i 这个地址

if ( (j==i)&&(j = =a)&&(*j = = 1) )

{

printf(" truen");

}

else

{

printf(" falsen");

}

system("PAUSE");

return 0;

}

在这里*i = *j = a[1] = 1。

指向地址的变量本应是指向指针的指针变量。程序改为如图所示,*j 存放的内容是i的内容,也就是a 这个地址,而*i存放的内容就是a[1]的内容也就是1,画图的话是很容易的。

#include<stdio.h>

#include<stdlib.h>

int main(int argc, char *argv[])

{

int * i,** j,a[4]={1,2,3,4};

i=a;//a是一个地址,i存放的内容是a

j=(int **)i;//i 是一个地址,j存放的内容是i

if ((int*)j == (int *)a ) //此处地址类型必须一致

{

printf(" truen");

}

else

{

printf(" falsen");

}

system("PAUSE");

return 0;

}


关于指针赋值给指针的问题 结构体指针赋值


  

爱华网本文地址 » http://www.aihuau.com/a/25101016/309006.html

更多阅读

关于CD真品、高仿的问题 决战奥格瑞玛cd问题

最近在耳机俱乐部的音乐区,出现了几个讨论高仿CD的帖子。大意是一些网友怀疑通过一些淘宝网店买到的碟,怀疑不是正品而是高仿或所谓“港版”,从这个怀疑引出了很多讨论,涉及真假CD的判别问题。具体可以读一读的最有代表性的帖子是:http:/

关于Windows732/64位安装TribonM3的问题 tribon m3视频教程

Tribon M3可以安装到Windows 7 32位或者64位操作系统上,但是TribonM3的补丁必须是sp5mu2bugfix以上。版本在Tribon模块的帮助里面可以查看。注:sp5mu2和sp5mu2bugfix不一样,sp5mu2bugfix是在打完sp5mu2安装包之后拷贝替换文件后的版本

关于如何用交换机共享上网的问题 接交换机后不能上网

悬赏分:10 - 解决时间:2007-2-18 04:25本人已经与别人共享上网,用的是宽带,接过来的线是用路由器拨号的上网方式,自动分配IP,所以过来的时候就可以上网了,无须做任何的设置,现我自己有交换机一个,想用拉过来的这根线再接一个交换机多分出一条

声明:《关于指针赋值给指针的问题 结构体指针赋值》为网友帝灬君分享!如侵犯到您的合法权益请联系我们删除