指针
- 怎么说呢,最开始入门C的时候,熬得要死不活的就是指针。
- 指针,其实也算块内存地址,只不过存的是别人的地址,
#include <iostream>
#include <string>
using namespace std;
int main(){
int temp1;
int *temp;
int* temp2 = new int[10];
// 访问变量地址
cout<<"temp1的地址:"<<&temp1<<endl;
//
cout<<"指针地址:"<<&temp2<<endl;
cout<<"指针指向地址:"<<temp2<<endl;
for (int i = 0; i < 10; ++i) {
temp2[i] = i ;
}
for (int i = 0; i < 10; ++i) {
// 打印的是地址
cout<<temp2+i<<endl;
// 地址存的值
cout<<*(temp2+i)<<endl;
}
// 指向指针
temp = temp2;
for (int i = 0; i < 10; ++i) {
// 打印的是地址
cout<<temp+i<<endl;
// 地址存的值
cout<<*(temp+i)<<endl;
}
}
NULL指针,
- 常用的就是,声明指针,记得初始化NULL,不然后果可能会很悲凉
#include <iostream>
#include <string>
using namespace std;
int main() {
int* ptr = NULL;
// 打印null
cout<<ptr<<endl;
}
- 多数情况下指针和数组都可以相互交换
#include <iostream>
#include <string>
using namespace std;
int main() {
int* temp = new int[5];
for (int i = 0; i < 5; ++i) {
// 指针型赋值
*(temp+i) = i;
}
}
- 其他的还有函数指针,指针函数在于是指针指向函数还是函数的返回类型是个指针,这一点容易混淆。
- 函数指针
#include
#include
using namespace std;
int (*cn)(int x,int y);
int add(int x,int y);
int main() {
int x=10,y=20;
cn = add;
int result = cn(x,y);
cout<<result<<endl;
}
int add(int x,int y)
{
return x+y;
}