user-0 提问: C语言奇怪指针问题

回复:
user: user-1
content: T++之后，移动了指针位置，当然没了！

user: user-2
content: 正常输出结果！没有破坏上面的！楼主重新编译下试试吧！可能是环境的原因吧！  $ ./a.out  a  a

user: user-3
content: Get_Next里下标越界操作破坏数组b了

user: user-4
content: 估计Get_Next里下标越界操作破坏数组b了，学习用debugger自己调试代码...

user: user-5
content: while (*T)     {         //这里的T 在自己加 所以要多一个P          //因为题目要求不能求子串的长度         //然后这里的字符串给近来从0开始 但是这里计算的是从1开始         if(j==0||p[j-1]==p[i-1])         {             i++;             j++;             next[i]=j;             T++;         }         else             j=next[j];               } 看看这里有没有越界 看看    char a[10]="abaabc";     char b[40]="abaaabaabcababaabc"; 的地址，是不是越界把b里的值改变了

user: user-1
content: 引用 10 楼 u011488256 的回复:[quote=引用 9 楼 szllong123 的回复:] int main() {         //下面的代码是子串和主串做比较的         char a[10]="abaabc";         char b[40]="abaaabaabcababaabc";         char *q=b;         printf("%c\n",*q);   //问题 出在这里 这个时候*q可以正常的输出a         printf("the pointer add of q is %ld:\n",q);         int next[7];         int i=0;         int count=0;         Get_Next(a,next);         printf("the pointer add of q is %ld:\n",q);         printf("%c\n",*q);   //每次执行了上面的函数后这个*q系统就没有值了 不知道 为什么  很奇怪         return 0; }  附上更改的地方  我跟你在相同的地方 加上了输出地址，第二次输出位置的时候就死了··[/quote] e,那就不晓得了，这个地址就是b[0]的地址，应该不会有问题

user: user-0
content: 引用 9 楼 szllong123 的回复:int main() {         //下面的代码是子串和主串做比较的         char a[10]="abaabc";         char b[40]="abaaabaabcababaabc";         char *q=b;         printf("%c\n",*q);   //问题 出在这里 这个时候*q可以正常的输出a         printf("the pointer add of q is %ld:\n",q);         int next[7];         int i=0;         int count=0;         Get_Next(a,next);         printf("the pointer add of q is %ld:\n",q);         printf("%c\n",*q);   //每次执行了上面的函数后这个*q系统就没有值了 不知道 为什么  很奇怪         return 0; }  附上更改的地方  我跟你在相同的地方 加上了输出地址，第二次输出位置的时候就死了··

user: user-1
content: int main() {         //下面的代码是子串和主串做比较的         char a[10]="abaabc";         char b[40]="abaaabaabcababaabc";         char *q=b;         printf("%c\n",*q);   //问题 出在这里 这个时候*q可以正常的输出a         printf("the pointer add of q is %ld:\n",q);         int next[7];         int i=0;         int count=0;         Get_Next(a,next);         printf("the pointer add of q is %ld:\n",q);         printf("%c\n",*q);   //每次执行了上面的函数后这个*q系统就没有值了 不知道 为什么  很奇怪         return 0; }  附上更改的地方

user: user-0
content: 引用 7 楼 szllong123 的回复:[quote=引用 6 楼 u011488256 的回复:] 什么说b被破坏的朋友··看看我的函数根本就没有 传b这个数组， b这个数组一直都没有用到的！   我的T++ 改变了   [quote=引用 5 楼 szllong123 的回复:] T++之后，移动了指针位置，当然没了！  什么东西没了？ 能先看下代码行不大哥[/quote] 不好意思确实是我看错了，我运行了你的程序是没问题的，并且打印q指向的地址也是没问题的，不知道你出错在什么地方。 附上打印结果：a the pointer add of q is 140733257222288: the pointer add of q is 140733257222288: a 我用的是，gcc 版本 4.8.2 20131017 (Red Hat 4.8.2-1) (GCC)编译器 [/quote] 郁闷了啊··我用的VC 6.0  奇怪了 那我自己在看看

user: user-1
content: 引用 6 楼 u011488256 的回复:什么说b被破坏的朋友··看看我的函数根本就没有 传b这个数组， b这个数组一直都没有用到的！   我的T++ 改变了   [quote=引用 5 楼 szllong123 的回复:] T++之后，移动了指针位置，当然没了！  什么东西没了？ 能先看下代码行不大哥[/quote] 不好意思确实是我看错了，我运行了你的程序是没问题的，并且打印q指向的地址也是没问题的，不知道你出错在什么地方。 附上打印结果：a the pointer add of q is 140733257222288: the pointer add of q is 140733257222288: a 我用的是，gcc 版本 4.8.2 20131017 (Red Hat 4.8.2-1) (GCC)编译器

user: user-0
content: 什么说b被破坏的朋友··看看我的函数根本就没有 传b这个数组， b这个数组一直都没有用到的！   我的T++ 改变了   引用 5 楼 szllong123 的回复:T++之后，移动了指针位置，当然没了！  什么东西没了？ 能先看下代码行不大哥