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的指针。指针无符号的事实与它们指向的内容无关。你当然是正确的。我的意思是,指针不是有符号的值,不管它指向什么。