关于C语言里面指针赋值的类型问题,还有一些关于指针的问题
我马上准备参加全国计算机二级考试,我又几个问题想问下。1.就是关于C语言里面的指针赋值类型是否必须要一致才能赋值,比如说int*p,floatk,现在有个赋值p=k的错误...
我马上准备参加全国计算机二级考试,我又几个问题想问下。
1.就是关于C语言里面的指针赋值类型是否必须要一致才能赋值,比如说int*p,float k,现在有个赋值p=k的错误是不是由于指针赋值的时候,类型必须要一致才行???
2,还有比如说有个char a[]={'a','b','c','d','f','g'},*p;
p=a;
print("%c\n",*p+4):
这个题目的结果是e,那么为什么不是f?,那么*p+4和*(p+4)有什么不同?
3,再看一个,char str[10];
scanf("%s",&str);
这个里面的&str和str是不是一个意思,是指这个字符数组的第一个字符的地址,还是整个字符? 展开
1.就是关于C语言里面的指针赋值类型是否必须要一致才能赋值,比如说int*p,float k,现在有个赋值p=k的错误是不是由于指针赋值的时候,类型必须要一致才行???
2,还有比如说有个char a[]={'a','b','c','d','f','g'},*p;
p=a;
print("%c\n",*p+4):
这个题目的结果是e,那么为什么不是f?,那么*p+4和*(p+4)有什么不同?
3,再看一个,char str[10];
scanf("%s",&str);
这个里面的&str和str是不是一个意思,是指这个字符数组的第一个字符的地址,还是整个字符? 展开
4个回答
展开全部
1.
你这个赋值的错误应该是由于=左右的类型不一致造成的。=左边的p是指针类型,而右边是
数值类型。
指针赋值当然也是要一致才行。但是应该这么验证:
int *p; float q; p=&q; //注意q前面的取地址符
2.
*p+4是先取出*p,然后*p的值再加4。对于你说的,*p应该是数组的第一个元素,也就是'a'
,‘a’加上4就是'e'了。
*(p+4)是先计算p+4(此时指针指向了'f'),然后取其值。
3.不是一个意思。赋值的话直接用str就行了,如果加上&的话,就会有错误了。
祝你考试顺利~~
你这个赋值的错误应该是由于=左右的类型不一致造成的。=左边的p是指针类型,而右边是
数值类型。
指针赋值当然也是要一致才行。但是应该这么验证:
int *p; float q; p=&q; //注意q前面的取地址符
2.
*p+4是先取出*p,然后*p的值再加4。对于你说的,*p应该是数组的第一个元素,也就是'a'
,‘a’加上4就是'e'了。
*(p+4)是先计算p+4(此时指针指向了'f'),然后取其值。
3.不是一个意思。赋值的话直接用str就行了,如果加上&的话,就会有错误了。
祝你考试顺利~~
展开全部
1。一个指针一个float完全不同的类型,当然不能赋值
2。你那个数组里哪有e呀?
3。当然不是一个意思,str是一个指针,&str是这个指针的地址,相当于二级指针了
2。你那个数组里哪有e呀?
3。当然不是一个意思,str是一个指针,&str是这个指针的地址,相当于二级指针了
追问
第二个问题是*p+4,不是*(p+4)
追答
*p+4相当于(*p)+4在你的题中,就是‘a’+4
*(p+4) 在题中相当于a[4]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.是。
2.结果没错,*p=a=65,再加4就是69,69就是e。而*(p+4)就是指a[4]。不是一个意思,第一个是指字符首地址,第二个是指第一个字符的地址,二者虽然是同一个值,但意义不同
2.结果没错,*p=a=65,再加4就是69,69就是e。而*(p+4)就是指a[4]。不是一个意思,第一个是指字符首地址,第二个是指第一个字符的地址,二者虽然是同一个值,但意义不同
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.p=k肯定是不对的,p是指针,k是个浮点数。例如float *p;int k;p=(float*)&k;也是可以的
2.*p+4表示把指针p指向空间的内容+4,即'a'+4,而*(p+4)则表示指针p指向的位置向后数4个的那个位置的值,即'f'
3.&str和str不是一个意思,str指向串首地址,&str是str的地址,可以理解成是地址的地址
2.*p+4表示把指针p指向空间的内容+4,即'a'+4,而*(p+4)则表示指针p指向的位置向后数4个的那个位置的值,即'f'
3.&str和str不是一个意思,str指向串首地址,&str是str的地址,可以理解成是地址的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询