c语言中,指针p的+1或-1,可不可以理解为指针在地址上的前进或后退?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中,指针p的+1或-1,可不可以理解为指针在地址上的前进或后退?相关的知识,希望对你有一定的参考价值。

参考技术A 您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!使用的指针函数
考虑到题中说的是小朋友学习100以内正整数的简单运算
所以考虑到了被减数 大于 减速 ,除数不为0,整除的情况
代码如下:
#include<stdio.h>#include<stdlib.h>#include<time.h>#include<string.h>#include<conio.h> char expression[10];char *p=expression;int result;char * GetRandomExpression();int main() char *p1; int i,count=1; char ch; printf("请输入下列算式的结果:\n\n"); while(1) p1=GetRandomExpression(); printf("第%d题:%s",count,p1); scanf("%d",&i); if(i==result) printf("恭喜!您答对了\n"); else printf("抱歉!您答错了\n"); printf("是否继续?(按Y继续,其他任意键结束):"); ch=getch(); if(ch=='Y'||ch=='y') printf("您选择了继续\n\n"); count++; else printf("您选择了退出\n\n"); break; char * GetRandomExpression() int num1,num2,index; char op[]="-+*/"; srand(time(NULL)); num1=rand()%100+1; num2=rand()%100+1; if(num1<num2) index=rand()%3+1; //保证被减数大于减速 else index=rand()%4; switch(index) case 0: result=num1-num2; break; case 1: result=num1+num2; break; case 2: result=num1*num2; break; case 3: while(num2==0||num1>100||num1%num2!=0) //保证除数不为0,且可以整除 result=rand()%100+1; num2=rand()%100+1; num1=num2*result; break; sprintf(expression,"%d%c%d=",num1,op[index],num2); return p;

满意请采纳。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
参考技术B 理解是对的。

C语言指针变量怎么转化为普通类型变量?

就相当于定义了两个共用体变量那样子行不行?
比如说
定义一个函数
int A(int a,int *b)

......
return a;


在main()中是

int a,b,c;
a=10;
c=A(a,&b);


在"......"处怎么写才能在A中改变main中变量b的值?

赋值语句即可传递数值。
指针变量: 声明 int *p; 语句中 *p 表示 值, p 表示 地址。
普通变量: 声明 int x; 语句中 x 表示 值,&x 表示 地址。
#include <stdio.h>
int A(int a,int *b)

*b=a; //赋值语句即可传递数值
return a;

int main()

int a,b,c;
a=10;
c=A(a,&b);
printf("%d %d %d\n", a,b,c);
return 0;
追问

哦,就是说赋值的时候要加一个*,不能直接是b=×××了

参考技术A 直接在A中用一个赋值语句就可以改变main中变量b的值,例如:*b=10;这样main中b的值就改为10了。
C语言中在函数中定义的变量都是局部变量,仅在该函数中可用。虽然 main 和 A 中都定义了名为 b 的不同类型变量,但这两个不是同一个变量,存储的位置也不同,作用的范围也不同。尽管main调用了 A ,但main中的变量b 在A中是不起作用的。但为什么通过A又能直接改变main中的b呢? 这就是 A 中指针变量 b 的作用了,A 被调用时,A中的 b 被赋予了main 中 b的地址,即 A中的指针 b 指向了 main 中的整型变量 b。在A中对 *b 赋值实际上就是给 main中的 b 赋值,也就可以改变main 中 b 的值。
参考技术B *b=xxx就可以了

以上是关于c语言中,指针p的+1或-1,可不可以理解为指针在地址上的前进或后退?的主要内容,如果未能解决你的问题,请参考以下文章

C语言指针,下标,

C语言中二维数组名是否可以看作指针数组名?

C语言中二维数组行指针是啥

c语言指针怎么理解,啥时候会用到指针,要注意哪些方面

c语言指针容易混淆的一些应用

C语言有这个就够了五.指针