我是 C++ 编程的新手,并试图通过阅读 Alex Alllain 的一本名为 Jumping into C++的电子书来学习这门语言,我目前已经完成了动态内存分配一章,我必须说我发现指针很难理解。
本章的最后是一系列我可以尝试的练习题,我已经完成了第一个问题(花了我一段时间才让我的代码工作),即编写一个构建任意维度乘法表的函数(你必须使用指针来解决问题),但我对我的解决方案不满意,如果它是正确的,如果我以正确的方式使用指针,我希望有经验的人指出缺陷,如果有,下面是我的自己解决问题的方法:
// pointerName.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <string>
#include <iostream>
#include <string>
void multTable(int size){
int ** x, result;
x = new int*[size]; // lets declare a pointer that will point to another pointer :).
result = 0;
for(int h = 0; h < size; h++){ // lets store the address of an array of integers.
x[h] = new int [size];
}
std::cout << std::endl << "*********************************" << std::endl; // lets seperate.
for(int i=0; i < size+1; i++){ // lets use the pointer like a two-dimensional array.
for(int j=0; j < size+1; j++){
result = i*j; // lets multiply the variables initialized from the for loop.
**x = result; // lets inialize the table.
std::cout << **x << "\t"; // dereference it and print out the whole table.
}
std::cout << std::endl;
}
/************* DEALLOCATE THE MEMORY SPACE ************/
for(int index = 0; index < size; index++){
delete [] x[index]; // free each row first.
}
delete [] x; // free the pointer itself.
}
int main(int argc, char* argv[]){
int num;
std::cout << "Please Enter a valid number: ";
std::cin >> num; // Lets prompt the user for a number.
multTable(num);
return 0;
}