stack 线程堆栈起始地址为什么要unsigned char *

mingchaoyan 2011-12-02 07:39:31
比如在tcp定义中

struct TCB{
unsigned char *stack; /*堆栈的起始地址*/
unsigned ss; /*堆栈段址*/
unsigned sp; /*堆栈指针*/
int state; /*进程状态*/
char name[10]; /*线程的外部标识符*/
}tcb[NTCB]; /*最大线程数 */


ss,sp都是 unsigned 型的
为什么就stack 这么不合群?
...全文
218 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwer_boo 2011-12-03
  • 打赏
  • 举报
回复
那就是移植性了
zichen0422 2011-12-03
  • 打赏
  • 举报
回复
考虑移植性!
不同的机器 字节长度不一样!
dq 2011-12-03
  • 打赏
  • 举报
回复
移植性:int在不同的系统中长度是不一样得,char在各个系统中都是一个字节。另外,节省内存。
gameslq 2011-12-03
  • 打赏
  • 举报
回复
unsigned char *stack 改成 unsigned 的
比如
unsigned *stack
这不是在浪费内存吗? 存储数据用 4个字节(stack 具有 unsigned int *地址属性)?

另外
stack 定义成 unsigned char *是合理的,不参与数据计算的情况下
unsigned char *更合适,纯地址引用。
编程点滴 2011-12-03
  • 打赏
  • 举报
回复
安全点
mingchaoyan 2011-12-03
  • 打赏
  • 举报
回复
有道理
gfzeng 2011-12-03
  • 打赏
  • 举报
回复
字符常量本身都是非负的, 用unsigned 起到节省内存的作用, 如果没有这个关键词, 那么存储量减少了一般.
windman521 2011-12-03
  • 打赏
  • 举报
回复
1,网络中使用的是字节流
2,机器架构不同,short,int 容易产生大小端问题。
datianshi9 2011-12-02
  • 打赏
  • 举报
回复
有所谓么??
AnYidan 2011-12-02
  • 打赏
  • 举报
回复
移植性
狂且 2011-12-02
  • 打赏
  • 举报
回复
这个和单片机程序差不多吧? 经常处理的是无符号数, 速度快? 范围大? 方便?
鲤鱼 2011-12-02
  • 打赏
  • 举报
回复
个人感觉无所谓吧~
qq120848369 2011-12-02
  • 打赏
  • 举报
回复
防止右移位符号位的填充?
qq120848369 2011-12-02
  • 打赏
  • 举报
回复
防止类型扩宽时符号位的填充?

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧