首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问一个整型指针变量和字符串指针变量的不同点

2012-03-01 
请教一个整型指针变量和字符串指针变量的不同点.老师们大家好:在看指针这一块时我有一个疑问,请老师能指教

请教一个整型指针变量和字符串指针变量的不同点.
老师们大家好:
              在看指针这一块时我有一个疑问,请老师能指教:
          整型指针时的定义和赋值如下:
                  1.   int   a=3,*p=&a;   不能直接*p=3或*p=a因为指针变量的值是地址,不是数值.但是字符串指针变量却是这样的:char   *ps= "C   Language ";直接给*ps赋值了字符 "C   Language ",但为什么可以这样直接给了值?这点不明白,请指教.
                  2.     字符串指针变量   char   *pa= "CHINA ",b[10],*pb;printf( "string   a=%s\n ",pa);         整型指针变量int   a=5,*p=&a;   printf   ( "%d ",*p);在printf中:pa为字符串指针pa前面没有 "* ",而整型指针p前面有 "* ",同样都是取到值,为什么有不同呢?
谢谢指导!!

 


[解决办法]
1.int a=3,*p=&a; 不能直接*p=3或*p=a,因为指针变量的值是地址,不是数值.
在定义时这样来解释是可以的。不过如果是
int a=3,*p;
*p=3;或*p=a
这样也是不对的,因为p是指针,指针在没有指向之前是指向的随机值地址,这时是不能赋值的。
而char *ps= "C Language ";是可以的,因为在实现上字符常量 "C Language "会被分配空间来存放,因此*ps实际上被赋予的这个字符常量存储空间的首址。
因此如果不是在定义中,应该这样写
ps= "C Language ";
2.printf函数里如果是输出字符串,%s对于的参数应该是指向字符串的指针或字符数组名,实际上也就是字符串第一个字符的地址,而%d对应的是变量名而不是地址。

热点排行
Bad Request.