C++ 向指针添加浮点、整数和
我对编程非常陌生,我一直在尝试做以下工作,但我不知道我是否做对了 我有以下声明C++ 向指针添加浮点、整数和,c++,c,pointers,C++,C,Pointers,我对编程非常陌生,我一直在尝试做以下工作,但我不知道我是否做对了 我有以下声明 int a, b, c; int *p1, *p2, *p3; char d, str[10], *cp; float big, r; 通过这些声明,我必须找出如何声明以下q变量。 例如,如果*p3是整数指针,r是浮点。那么q1应该是什么呢。我需要知道如何申报 但是因为每一个都是不同类型的,我不知道怎么做。一些提示将不胜感激 q1 = r + *p3; q2 = &
int a, b, c;
int *p1, *p2, *p3;
char d, str[10], *cp;
float big, r;
通过这些声明,我必须找出如何声明以下q变量。
例如,如果*p3是整数指针,r是浮点。那么q1应该是什么呢。我需要知道如何申报
但是因为每一个都是不同类型的,我不知道怎么做。一些提示将不胜感激
q1 = r + *p3;
q2 = &p1 + 5;
q3 = *str + c;
q4 = &str[4];
q5 = *p2;
因此,我认为问题在于使用上面的声明和下面的表达式,并为表达式提供一组有效的类型
q1 = r + *p3;
q2 = &p1 + 5;
q3 = *str + c;
q4 = &str[4];
q5 = *p2;
我认为这些类型适用于上述表达式:
float q1 = r + *p3; // float = float + int
int **q2 = &p1 + 5; // int ** = int** + int
int q3 = *str + c; // int = char + int
char *q4 = &str[4]; // char * = char *
int q5 = *p2; // int = *int*
q1、q3和q5可以是任何数字类型。我选了一个对我来说最明显的
因此,我认为问题在于使用上面的声明和下面的表达式,并为表达式提供一组有效的类型
q1 = r + *p3;
q2 = &p1 + 5;
q3 = *str + c;
q4 = &str[4];
q5 = *p2;
我认为这些类型适用于上述表达式:
float q1 = r + *p3; // float = float + int
int **q2 = &p1 + 5; // int ** = int** + int
int q3 = *str + c; // int = char + int
char *q4 = &str[4]; // char * = char *
int q5 = *p2; // int = *int*
q1、q3和q5可以是任何数字类型。我选择了对我来说最明显的一个。为什么代码中没有q?它们是什么?我已经在你的问题中添加了“c”标记,假设你使用的是这种语言。如果这是不正确的(比如说,如果你使用的是C++),请更新它。你是在问q变量的类型吗?不清楚你在问什么。您是否需要声明
q1
等,以便五个赋值语句有效?(请注意,如果q2
属于int**
类型,则q2=&p1+5;
将是合法的,但其行为仍将是未定义的。)@user2793064:没有唯一的答案r
是一个float
,而*p3
是一个int
;它们的总和可以分配给任何数字类型的对象。为什么代码中没有q?它们是什么?我已经在你的问题中添加了“c”标记,假设你使用的是这种语言。如果这是不正确的(比如说,如果你使用的是C++),请更新它。你是在问q变量的类型吗?不清楚你在问什么。您是否需要声明q1
等,以便五个赋值语句有效?(请注意,如果q2
属于int**
类型,则q2=&p1+5;
将是合法的,但其行为仍将是未定义的。)@user2793064:没有唯一的答案r
是一个float
,而*p3
是一个int
;它们的总和可以分配给任何数字类型的对象。q2不应该是int,因为指针是无符号的。可能是无符号整数或64位无符号。@AviPerel我不同意。p1是指向int的指针。&p1是指向int的指针。&p1+5是指向int的指针。指针无符号的事实与它们指向的内容无关。你当然是正确的。我的意思是,指针不是有符号的值,不管它指向什么。q2不应该是int,因为指针是无符号的。可能是无符号整数或64位无符号。@AviPerel我不同意。p1是指向int的指针。&p1是指向int的指针。&p1+5是指向int的指针。指针无符号的事实与它们指向的内容无关。你当然是正确的。我的意思是,指针不是有符号的值,不管它指向什么。