引用
1 变量的引用就是一个变量的别名,变量和变量的引用代表着同一个变量
2 紧跟在数据类型后面的&符号就是引用的声明符号,其他情况都可以认为是取地址符号。
int a = 3;
int& b = a; //正确
int& c = b; //正确
int* p = &b; //正确,得到的是变量a的地址
*p = 5;
c = 6;
可以逐语句调试上述代码,看看a,b,c,p,*p,&b值的变化。
new和delete动态分配内存
int* p = new int(5); //C++ 中使用 new 来申请一个int类型变量的内存
delete p; //删除变量
int* p = new int[5]; //使用new申请一个包含5个int元素的数组
delete [] p; //删除数组
get_same_string 函数的作用是从参数p1和p2中找出相同的部分
方法1 使用指针
用new和delete动态分配内存,没想明白应该怎么写,先用之前的指针实现。
#include <iostream>
using namespace std;
#include <string> //C++语法
char szret[50][50];
void* get_same_string(char* p1, char* p2)
{
int j = 0;
for (;*p1!=0;p1++)
{
char* p22 = p2;
for (; *p22 != 0; p22++)
{
if ((*(p1) == *(p22)) & (*(p1+1) == *(p22+1)))
{
for (int i=0; *(p22+i) != 0; i++)
{
if (*(p1+i) == *(p22+i))
{
szret[j][i] = *(p22+i);
}
else break;
}
j++;
}
}
}
return szret;
}
int main(int argc, char* argv[])
{
char a[] = "aakjhzbccxuigeayy";
char b[] = "gekxuikbccuyyaal";
get_same_string(a, b);
for (int i = 0; szret[i][1] != '\0'; i++)
{
cout << "szret的值为" << szret[i] << endl;
}
system("pause");
return 0;
}
遇到的问题
- 在void* get_same_string(char* p1, char* p2)函数中如果缺少return会报错,void*定义的函数需要返回一个指针。
- 由于需要返回多个字符串,我这里使用了二维数组,每一个szret[i]都代表一个相同的字符串。
- 对与new,delete感觉理解的不到位,后面学下去,碰到例子再来补充。