我正在尝试创建一个程序来使用指针比较数组元素并给出一些结果;我做这个简单的程序只是为了测试它是否有效,但我不知道为什么..如果我输入等于数字没有任何事情发生。所以数组的第一个变量是ptr,所以ptr + 1表示下一个元素,如果我直接输入ch [0] == ch [1]它就可以了。之后我想让程序比较字符是否相同。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int ch[2];
int *ptr=&ch;
scanf("%d%d",&ch[0],&ch[1]);
printf("Numbers to compare %d and %d",*ptr,*ptr+1);
if (*ptr == *ptr + 1){
printf("Equals numbers\n");
}
return 0;
}
答案 0 :(得分:3)
永远记住快速规则。
如果元素是某个数组的i th
和i+1 th
索引,那么在不使用指针的情况下访问它们的方法是
a[i]
&amp; a[i+1]
现在,如果您想在不使用指针的情况下获取这些值的地址,那么您可以执行&a[i]
和&a[i+1]
现在,如果你想用指针执行上述两个任务,那么记住数组名称本身就是指向它的指针。因此,如果您想获取i th
和i+1 th
元素的地址,那么它就是
(a + i)
和(a + i + 1)
现在,如果您想获取这些位置的值,那么只需将其取消引用(如
) *(a + i)
和*(a + i + 1)
这就是为什么在这种情况下,它将是*ptr == *(ptr + 1)
注意: &a[i] is equivalent to (a+i)
和a[i] is equivalent to *(a+i)
注2: If you are not using Turbo C in windows system, then it is not recommended to use conio.h because it is not platform independent. I recommend you to move from Turbo C & conio.h
答案 1 :(得分:0)
解释@kaylum评论哪个是正确的:
您已经if (*ptr == *ptr + 1)
现在*ptr
部分是正确的,但==
的右侧是不正确的,因为您将其取消引用ptr
,然后再添加一个ptr
值。但是,您希望增加()
然后取消引用,从而为什么需要#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface CrinkedView : UIView
@property (nonatomic, strong) IBInspectable UIImage *crinkedImage;
@end
答案 2 :(得分:0)