指针学习笔记

  1. 指针基本声明与使用
  int num = 1;
  int *pNum = #
  int nums[5] = {1, 2, 3, 4, 5};
  int *pNums = nums;
  int *p = new int[10]; 
  *p = 10; 
  cout << pNum  << ":" << *pNum << endl  
   << pNums << ":" << *pNums << endl 
   << p << ":" << *p << endl;
  delete []p;
  //将指针置为空
  pNum = 0; //int zero = 0;  pNum = zero; 错误:不能把int变量直接赋给指针
  pNums = NULL; 
  p = nullptr;

运行结果:

  0x62fe40:1
  0x62fe38:1
  0x7c1570:10
  1. 指针与数组
  char aChar[10];	
  cin >> aChar;	
  cout << aChar << endl;	
  char *pChar = "word";	
  //分别输出地址,字符串,首字符:	
  cout << (int *)pChar << ":" << pChar << ":" << *pChar << endl;	
  //copy地址;	
  pChar = aChar;	
  //copy内容:	
  pChar = new char[strlen(aChar) + 1];//'\0'	
  strcpy(pChar, aChar);
  cout << " pChar: " << pChar <<endl;

输入:hello 输出结果:

  hello
  0x406068:what:w
  pChar: hello
  1. 指针函数与函数指针
    函数指针指的是函数的返回值为指针类型,例如:
char *fun()
{
   char *p = "fun()";
   return p;
}

指针函数本质上也还是指针,只是这个指针指向的是一个函数
声明格式:类型说明符 (*函数名) (参数)
例如:

int add(int x,int y)
{
    return x+y;
}
int sub(int x,int y)
{    
    return x-y;
}
//指针函数
int (*fun)(int x,int y);
int main()
{
    //第一种写法
    fun = add;
    cout << "(*fun)(1,2) = " << (*fun)(1,2) <<endl;
    //第二种写法
    fun = &sub;
    cout << "(*fun)(5,3) = " << (*fun)(5,3)<<" "<< fun(5,3);
}

输出结果为:

(*fun)(1,2) = 3
(*fun)(5,3) = 2 2
  1. 指针常量与常量指针

指针常量的声明:数据类型 * const 指针变量。
常量指针的声明:数据类型 const * 指针变量 或者 const 数据类型 *指针变量。
常量指针常量的声明:数据类型 const * const 指针变量 或者 const 数据类型 * const 指针变量。

指针常量是指向常量的指针,不能通过指针修改指针指向的值,但是可以修改指针的指向

int i = 1, j = 2;
int const *p = &i;//或者是 const int *p
//*p = j;错误:不能通过指针修改指向的值
p = &j;//正确:可以修改指针的指向

常量指针指的是不能改变指针的指向,但是可以改变指向地址的值

int i = 1,j =2;
int *const p = &i;
//p = &j; 错误:不能改变指针指向
*p = j;//正确:可以修改指向地址的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值