c语言指针学习笔记

Example 1;

int a,b,*p,*q;
*p=a;
p=&a;
p=q;
b=*p;

p=a;錯誤,因爲p實際上是一個地址,而a是一個整型值
p=*q;錯誤,因爲這句話的意思是:將地址q指向的單元的值賦給地址p。而實際上p是一個地址,是不能存值得
*p=&a;錯誤

注意,如果這樣定義了*p,那麽*p表示地址(指針)p指向的單元的值,而p表示一個地址,指針p本身只能存放它所指向的變量的地址,而不能存放變量值,*p也不是說能存放變量的值,它實際上表示一個指向變量的值或者說存儲區域,具體意義比如b=*p表示運算符*訪問以p為地址的存儲區域,但是如果是這樣*p=&a,則是錯誤的,因爲*p它指向的應該是一個存儲區域而不是一個地址。

Example 2;

char s[]="CHINA";char *p;p=s;
這個裏面,*p與s[0]相等,為什麽呢?因爲指針p是指向s[0]的,那麽*p就可以說是引用的s[0]的内容。

有一點我們要謹記,數組名所代表的就是數組最開始的一個元素的 地址。所以,在這裡,可以有p=s;而上例中的p=a則是錯誤的。

Example 3;

有以下程序:

/* strlen函数:返回字符串s的长度 */

int strlen(char *s)

{
  char *p=s;
  while(*p!='/0')
      p++;
  return p-s;
}

在这个程序里面,有一句char *p=s,这句是没有错的,这句等价于char *p;p=s;


此文是本人在学习C指针时的一点笔记。若有错误之处,还望各路人甲乙丙丁帮忙指出。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值