所以我正在学习C指针,我有点困惑。指针只指向特定的内存地址。
sizeof(char*),sizeof(int*),sizeof(double*)全部输出8。因此,它们都使用8字节来存储内存地址。
但是,如果我试图编译这样的东西:
int main(void)
{
char letter = 'A';
int *a = &letter;
printf("letter: %c\n", *a);
}
我收到编译器(gcc)的警告:
warning: initialization from incompatible pointer t
我以前在C程序中多次使用的函数如下:
/**
Splits a given string into an array of strings using given delimiters.
@param input_string
The string to be split.
@param delimiters
The characters that will be used as delimiters.
@return
The components of the split string followed by @
我会举几个例子来解释一下。首先,我声明一些对象,比如
CString* param = new CString[100]
当我声明这个的时候,我的内存会增加一点,因为它是一些实现的字符串。然后我将这个对象存储在某个CString列表中,就像这样
List<CString> myList = new List<CString>; // new list of CString
myList.add(param);
这是我的问题:我想知道,当我删除myList时,我的参数不会被删除,对吧?参数中的记忆仍然存在。
我是不是误解了?
对于你们中的一些人来说,这个问题可能有点不言自明,但我真的想了解一下:List myList = new ArrayList<Vertex>(); {In JAVA }和Vertex* myList = new Vertex[size] { In C++}之间有什么相似之处。在Java中不存在的*在C++中有什么意义。我知道它指向list..when的第一个元素,我们应该使用*吗?只是为了向量还是?