C语言认识(二)指针

指针 *

int main()
{
	int a = 10, b=20;
	int c = a *b;
	int *p = NULL;
	p = &a;
	*p = 100;
	p = &b;
}

*p认为是一级指针;p存的是a的地址

指针又称为间接访问符。

&*p = p;

*&p = p;

Typedef查询一下。

基本变量可以进行混合运算。{char、 int、 long int、…}

混合类型 数组、指针等

基本类型不能和混合类型进行运算。

 

无论是 int *p;还是 char *p1;double *p2;

指针的大小是固定的,由CPU大小决定。32bit电脑对应 4字节

64bit电脑对应8字节。

           

*p不能给野指针赋值;!!!一定要初始化;

    int x = 0;

    int *p = NULL;//#define NULL 0;

    if (p != NULL){}// 这里不能用 (p != 0)//有时NULL = 0xffffffff;

数组:ar[10]

数组名就是数组的地址,指的是数组首位地址;也是常量

ar[i]; //=> *(ar + i);

i[ar]; //=> *(i + ar);

ar[i]; // => *(ar + i) => (ar + sizeof(int)*i);

int *p = &ar[0]; // int *p = ar;

cout << p[i] << " " << *(p + i) << " " << i[p] << endl;

下标前的不一定时数组名哦。可能是一个指针。

数组名在做形参的时候可以退化为指针;

 

失效指针

不能把局部变量的地址反馈出来,函数生存期结束,地址失效,指针变成失效指针。

int* GetInt()
{
    int a = 10;
    return &a;
}
int main()
{
    int *p = NULL;
    p = GetInt();
    printf("%d ,"*p);
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值