我不确定我是否可以在这里问一些基本的问题,但是我开始学习C++,并且不理解指针语法中的一件小东西。
下面是我的代码示例:
using namespace std;
int randomname(int *x);
int main(){
int a = 1;
int *ab;
ab = &a;
randomname(&a);
}
int randomname(int *x){
*x = 9001;
}
我的问题是关于*符号。为什么主要功能是ab = &a;我不需要*,而是在线*x = 9001;我需要它?我认为
案例1:
#include <stdio.h>
int main()
{
int a = 5,*p;
*p = &a;
printf("%d",*p);
}
上述程序给出了分割故障问题。但在第二种情况下,效果很好。案例2:
#include <stdio.h>
int main()
{
int a = 5,*p = &a;
printf("%d",*p);
}
有人能解释一下这个问题吗。谢谢。
我正在学习C++的基础知识,并在学习指针时遇到了这个问题。据我所知,*用于访问指针中存储的地址的值。所以如果我要这么做
int *p;
p = new int[5];
为什么第二行会在堆中创建数组并将数组的地址存储在p中?我们没有通过执行一个p来取消第二行中的*p。据我有限的知识告诉我,执行p=value将在指针p中存储该值,而我们应该将该值的地址存储在指针p中。
我正在编写一个模板类,然后需要编写测试用例来测试我的代码并验证所有方法是否正常工作。在我的测试文件中,我尝试创建Collection实例,但是得到了以下错误:“没有构造函数”的实例"Collection“与参数listC/C++(289)匹配。我定义了一个no-arg构造函数,所以我不知道为什么它不能工作。
下面是我的类中定义构造函数的部分:
template <typename Object>
class Collection
{
// TODO(student): the rest of the template
private:
Object
我有几个类:数组,形状,点。点是一种形状。
我创建了一个ShapePtr数组,并为第一个元素分配了一个Point。当我打印Array的第一个元素时,它只显示一个奇怪的数字(我想是内存位置?)。这是正常的吗?有没有办法打印指定给那个位置的点?或者这点已经被摧毁了?我的主要内容如下:
{
// Typedef for a shared pointer to shape
typedef boost::shared_ptr<Shape> ShapePtr;
// a typedef for an array with shapes stored as shared pointer
我注意到,在C++中,可以使用两种不同类型的缩进来声明指针(如果这是我要寻找的正确单词):
//Space followed by asterisk with variable name
char *pointer;
//Asterisk followed by space and then variable name
char* pointer;
星号的位置对指针有影响吗?如果是,在什么情况下,我需要使用一种类型的缩进对另一种?
好的,所以我第一次阅读C++初级,第五版,和我第一次学习关于警察的知识。它一开始就说:
重要的是要理解,当我们在constexpr声明中定义指针时,constexpr说明符应用于指针,而不是指针所指向的类型:
const int *p = nullptr; // p is a pointer to a const
*q = nullptr; // q is a const pointer to int
好吧所以我想..。它是一个指向const的指针,这意味着p(指针)它-self不是一个常数,所以我可以改变它。所以,当然,我在我的IDE上试了一下:
#include <ios
我对整个C语言都不熟悉,但是我的代码总是出现这个错误
UArray2.c:19:error: request for member ‘i’ in something not a structure or union
它显然是我的main函数中的uarray.i,但是我不明白为什么它看不到它。
这是我的.h文件。不太有趣..。
//UArray2.h
#include <stdlib.h>
#include <stdio.h>
#ifndef UARRAY2_INCLUDED
#define UARRAY2_INCLUDED
#define T UArray2_T
typ
很难分辨星号与指针的关系。
下面是一些让我感到困惑的代码示例。
typedef struct X { int i_; double d_; } X;
X x;
X* p = &x;
p->d_ = 3.14159; // dereference and access data member x.d_
(*p).d_ *= -1; // another equivalent notation for accessing x.d_
在第五行,我们有(*p).d_ *= -1;。为什么有两个星号?他们的位置意味着什么?
int x = 2;
int* p_x = &x;
我看了C99规范(N1256.pdf),上面写着(第11506页):
const int *ptr_to_constant;
int *const constant_ptr;
“ptr_to_constant指向的任何对象的内容不得通过该指针修改,但ptr_to_constant本身可更改为指向另一个对象。类似地,constant_ptr指向的int的内容可以修改,但constant_ptr本身必须始终指向相同的位置。”(6.7.5.1指针声明器)
现在,从我前面所读到的情况来看,下面两个陈述会导致相同的行为。
int *const constant_ptr; /* This form is
我正在尝试创建一个网格,据我所知,这个问题来自于在它自己内部使用一个模板类的指针,这是合法的,直到我尝试使用它,当编译器抱怨的时候。我正在寻找一种方法来使用指针的一个类的模板在其自身使用使用的指针,并做我稍后会做的事情。我用g++版本5编译,我使用的编译命令是g++ *.cpp -o main -std=c++11,我得到的错误将跟随在代码片段之后。 struct Vector2D
{
Vector2D( ) { }
Vector2D( int x , int y ): x( x ) , y( y ) { } ;
int x , y ;
} ;
tem