c语言中,i=*p-‘0’是什么意思
*p--=0表示先对指针p所指向的内存单元赋值为0,之后,将指针p的地址减1一个内存单元的大小。
可以通过如下的程序段来进行理解:
int a[]={1,2,3,4}; // 定义一个int型数组,并进行初始化int *p=&a[2]; // 定义一个int型指针变量,并指向a[2]所在的内存单元printf("%x
", p); // 输出指针p的内存地址,结果为0x2cfb28*p--=0; // 将内存地址为0x2cfb28的内存单元赋值为0(即a[2]=0),之后内存地址减4(因为一个int类型占4个存储单元)printf("%x
", p); // 输出指针p的内存地址,结果为0x2cfb24以上程序执行后数组a的值为1 2 0 4
b[i]-'0'是把b[i](一个数字字符)转换为与字面同值的数字。例如,把'2'转换为2。
bb[*p-'0']++;是用于统计*p的字符出现了几次。事先把bb[10]数组全部置0,之后,若*p=='2',则bb[*p-'0']++;就bb[2]++;用于统计2出现了几次。bb[10]其余元素的作用完全相同。
'0'在这里也是一个字符(用单引号括起来的都是一个字符char型)
由于对于C语言来讲,字符是用ASCII码表示的,也就是说一个字符是一个0~255的整数,'0'的ASCII码是48,'1'的ASCII码是49。。。
所以*p-'0'实际上可以写成*p-48
由于你的str[]里面全部是字符型的数字,因此实际上i=*p-'0'实际上是把这些字符转换成整数
比如*p指向'3'的时候,因为'3'的ASCII码是51,所以*p-'48'就等于整数3
所以整段程序的意思是吧你的一个只包含数字的字符串str中的每一个字符转换成整数放在a[i]中
你给的不全,不过p是一个指针,*p代表p所指向的变量的值,它减去数字零的ASCII码值所得的值赋给变量i。
1楼的不懂不要瞎回答
这下就清楚了。
这是一个统计str字符数组中每个数字出现次数的程序,不过有点问题:第二个for语句的判断表达式应为*p!='\0'。
*p-‘0’即为p所指当前字符数字的数字值,将其赋给i,使计数器数组a[]中对应的元素自加一。
如有不懂处,给我留言。
第一句话是错误的,应该为:
p
=
&
原因是&是取地址运算符,&是变量amp在内存中所占用的地址,对于一个指针型变量而言,p是指指针变量p中储存的地址,*p是指变量所指的地址中的数据。例如amp的内存地址0x1234,其中的数据是9876,那么p表示0x1234,*p表示9876。
0&是指0和amp执行“与”操作,结果为0。
3楼OK
楼主问的就是*p指向地址的值减去'0'的ASCII码的值48,结果赋值给i
p的值为0
c语言中,i=*p-‘0’是什么意思
由于对于C语言来讲,字符是用ASCII码表示的,也就是说一个字符是一个0~255的整数,'0'的ASCII码是48,'1'的ASCII码是49。。。所以*p-'0'实际上可以写成*p-48 由于你的str[]里面全部是字符型的数字,因此实际上i=*p-'0'实际上是把这些字符转换成整数 比如*p指向'3'的时候,因为'3'的ASCII...
c语言i=** p是什么意思啊?
i=*p意思是将指针p所指向的值赋予给i,*p=*&j是指将j的值赋予给指针p所指向的值,而指针p指向了变量i,因为就实现将j的值赋予给i; i=&j是指将变量j的地址赋予给i;*p等于变量i了,因此 i=**p就已经不能满足实现i=j。
C语言中的* p++是什么意思?
p++就是先取出指针p指向的地址单元的数据,之后再将该值加1。由于运算符 * 的优先级高于运算符 ++,所以是先取指针p指向的地址单元的数据。若果是*(p++),那么就是先将地址加1,之后取出新地址中的数据。在c语言中 ++的优先级大于* i=*p++ 相当于 i=*(p++),又相当于 i=*p; p++; 但...
c语言指针p++什么意思?
p++就是先取出指针p指向的地址单元的数据,之后再将该值加1。由于运算符 * 的优先级高于运算符 ++,所以是先取指针p指向的地址单元的数据。若果是*(p++),那么就是先将地址加1,之后取出新地址中的数据。在c语言中 ++的优先级大于* i=*p++ 相当于 i=*(p++),又相当于 i=*p; p++; 但...
c语言题:在键盘输入10个整数 逆序存放并输出
但如果使用一个数组来实现的话存储在数组里的数据就可能是顺序的(不使用逆序有方式将数据存储在数组里)一个简单的例子 include <stdio.h>#define PUSH(i) (*p=i,++p)#define POP(i) (--p,i=*p)int main(int argc,char **argv){ int a[10]; int i,r; int *p=a; for...
C语言指针**p是什么意思
p :二级指针,表示p所指向的地址里面存放的是一个指向类型的指针。p:一级指针,表示p所指向的地址里面存放的是一个类型的值。
* p++是什么意思?
p++就是先取出指针p指向的地址单元的数据,之后再将该值加1。由于运算符 * 的优先级高于运算符 ++,所以是先取指针p指向的地址单元的数据。若果是*(p++),那么就是先将地址加1,之后取出新地址中的数据。在c语言中 ++的优先级大于* i=*p++ 相当于 i=*(p++),又相当于 i=*p; p++; 但...
以下C语言选择题选什么,并作简要分析。
C、i=*p;D、i=2*p+1;答 这个 编译正确的 应该是B A 指针 不能把一个数据赋值给指针 因为指针 存储的是地址 数据 是没有地址的 所以 编译没有错误 但是 运行的时候 会出现内存错误导致程序的 崩溃 B p是一个地址 地址 赋给int 是可以的 但是翻译出来的是一个随机数 编译可行 没错误 C ...
c语言选择题10道
1、设 int *p , I ;以下正确合理的语句是(B )。 \/\/p未初始化,指向随机空间,不能赋值, 也不能提取实体。上机测试B通过,D编译错误 A、*p=10;B、i=p;C、i=*p;D、i=2*p+1;2、设 char s[10] ; int I ; 以下引用数组 s 中元素正确的表达式是(B )。 \/\/s[]可提取...
c语言a=* p++是什么意思?
a=*p++的意思是p指针指向的值赋给a,然后指针加一指向下个单元。C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序员中备受青睐。最近25年是使用最为广泛的编程语言。C语言是由UNIX的研制者丹尼斯·里奇(Dennis...
周彦益肝: 定义int* 即整型指针变量.变量名为p.初始化值为NULL,即空指针.
忻府区13622489143: C语言中*p=0表示? - ?
周彦益肝: 也得看p的定义了 如果int *p;*p=0;则是把p执行的int空间的值修改为0 如果int **p;*p=0;则是把指向int空间的指针置为0. 上面这几个例子,都得考虑p是否指向了有效内存位置,否则是危险的操作.完整的范例: int a; int *p=&a; *p=0; 相当于p指向的int空间,即a的值被改为0了如果p是更多级的指针或是指向更复杂的内存,可以把一级指针之外的内容看成一个整体,比如: int **p; 可以先 typedef int *IntPointer; IntPointer *p; 然后*p=0; 就是把p指向的IntPointer空间的值置为0. 诸如此类.
忻府区13622489143: C语言中指针*p与*p - '0'和*p+'0'有什么区别 - ?
周彦益肝: *p就是指针指向目标的值-'0' 就是减去48,如果是p指向的是数字字符(一位)就转换为对应的数字的ascii码+ '0'就是加上48,当然就是将p指向的数字(一位)转换为对应的ascii码
忻府区13622489143: n=n*2+*p - '0'; 这句在c语言里是什么意思 谢谢?
周彦益肝: *p-'0'就是将字符变成数字,例如123 当 p指向1的时候,*p = '1' ,而'1'-'0'就是两者之间的ASCII码进行相减,结果就是1了.
忻府区13622489143: 这个语句n=*p - '0';具体是什么意思 - ?
周彦益肝: 这个不难吧?C 语言 刚入门?n=*p-'0':p应该是指针*p就是p指向的内容减去 字符 0 ascii 码,结果 赋值给 变量 n!不会是 查表 法 的程序吧?通常 指针p指向的内容 应该是 0-9 数字 吧
忻府区13622489143: C语言中b[i] - '0'是什么意思?bb[*p - '0']++什么意思?'0'有什么作用? - ?
周彦益肝: b[i]-'0'是把b[i](一个数字字符)转换为与字面同值的数字.例如,把'2'转换为2. bb[*p-'0']++;是用于统计*p的字符出现了几次.事先把bb[10]数组全部置0,之后,若*p=='2',则bb[*p-'0']++;就bb[2]++;用于统计2出现了几次.bb[10]其余元素的作用完全相同.
忻府区13622489143: C语言中 int *p=NULL; 则这条语句是不是错的? *p=0 - ?
周彦益肝: C语言中int *p=NULL意思是: C语言中p里面是随机值,在int *p=NULL,这个p是有值的,为NULL; int *p=NULL指向一个空指针,等于 int *p=0; NULL等于0;可以随时让这个p指向其他地址.定义指针,将它初始化为NULL,这样做编程更规范...
忻府区13622489143: 关于C语言,*p=a[0]是什么意思呀? - ?
周彦益肝: c语言中*p=a是指针变量赋值语句,这种写法有两种可能意思:1.指针变量定义时的初始化赋值int a[10];int *p=a ; //这时的a是个地址,如:数组名或指针变量,表示定义指针变量p,同时,p指向地址a. 这里的*是跟随int的,用来表示p变量是int...
忻府区13622489143: C语言中P=*i和P=&i什么意思 - ?
周彦益肝: *是取值的意思,&是取地址的意思 第一个是:P是i地址指向的值 第二个是:p是i这个值的地址
忻府区13622489143: c语言a=*p的含义 - ?
周彦益肝: a=*p //将指针*p指向的变量值赋给a a=p //指针p指向某变量的地址赋给a