当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 思路或者源码,谢谢。 要考虑到传入参数可能会或多或少。 传入参数是用一个类对象好呢,还是用形如(int,boolean,string) ......
    摘要: 如题! ......


好简单的

1>>  
   
  #include   <stdio.h>  
   
  int   main(void)  
  {  
      char   str[]="xyz";  
      char   *ptr=str;  
      *(ptr+1)=Y;  
      printf("%s",ptr);  
      getch();  
      return   0;  
  }  
  我的问题是:  
   
  当执行*(ptr+1)=Y;时指针ptr应该指向了"xyz"的第二个字节,即y.赋过值后也即是Y.  
  所以当printf("%s",ptr);时!  
  为什么不是从ptr所指向的地址开始打印直到遇到\0呢?  
   
  2>>  
   
  char   heart[]="i   love   you";  
    heart[7]=M;  
  或者:  
  *(heart+7)=M;  
  但:  
  char   *word="frame";  
  若:  
  word[1]=i;  
  这是一个错误!  
   
  问题:  
  为什么可以通过一个数组来访问并修改元素值而不可以通过指针来修改呢?  
  有一个疑问:  
  好像C中没有数组这个概念,它本来就是指针!  
  比如通过数组来访问元素时其实它还是通过指针来访问的是不是这样的?  
 

NO.1   作者: Zark

问题1:   *(ptr+1)=Y后ptr并没有变化,这和int   i=10;   int   y=i+1;后i的值仍为1是一个道理.  
   
  问题2:   这和数组/指针没有关系.char   heart[]="i   love   you";   heart指向的是栈内数据,所以heart[1]=x成立.如有char*   p=heart;   *p=x;也成立.   char   *word="frame";   word   指向的是一个常量字符串,既然是常量,当然不能改,所以*word=x;是错的,而word[1]=x;也是错的.  
 

NO.2   作者: dragonlw

问题2:   这和数组/指针没有关系.char   heart[]="i   love   you";   heart指向的是栈内数据,所以heart[1]=x成立.如有char*   p=heart;   *p=x;也成立.   char   *word="frame";   word   指向的是一个常量字符串,既然是常量,当然不能改,所以*word=x;是错的,而word[1]=x;也是错的.  
   
  我完全赞同zark的第二个观点。  
  第一个我用vc6.0运行的结果却是如下:  
  #include   <iostream>  
  using   namespace   std;  
     
  void   main()  
  {    
      char   str[]="xyz";  
      char   *ptr=str;  
      *(ptr+1)=Y;  
      cout<<str<<endl;  
     
  }  
  xYz  
  Press   any   key   to   continue  
    你用a【3】访问数组的第四个元素后,别把a【0】错误的当成a【3】的地址。呵呵

NO.3   作者: yiminggw

1。ptr代表分配的首地址,你修改的只是“*(ptr+1)=Y;”即ptr[1],而不是整个的  
  2。不知道


 ·    »显示摘要«
    摘要: 散分 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE