C语言基础(三)

指针:

不论什么指针类型,指针的大小总是由机器位数决定,例如32位客户端指针占用4个字节

&:取地址 *:在定义时表示指针变量,在用时表示取值 p:p指向的地址 *p:p指向的地址值

&p:p本身的地址

int *p ;
    *p = 3 ;
上述会出现段错误,修改了未定义的内存,指针指向不明

(*p)++与*p++、++*p的区别?

(*p)++指p指向内容,然后内容+1

*p++ 先求p指向的内容,然后指针指向地址向后挪一位

++*p 指p指向内容+1


malloc:申请空间(对于未赋初值的字符串变量,要想输入字符串,则必须向内存申请空间)

例如:

char  *p ;
p = (char*)malloc(sizeof(char)*20)
表示字符指针p申请了一个20个字符长度的内存,并指向这个空间


指针与数组:

如果指针变量p指向数组中的元素,则(p+i)=(a+i)

char str[ ] = “i love china” 局部变量,栈空间

char *str = “helloworld” 常量,数据段空间,不可被更改


有参宏函数:

#define  s(a,b)  a*b

              s(2, 3)=2*3

#define  s(x)=x*x

              int k=2, m=1;

              s(k+m)=2+1*2+1           (一根筋替换)

宏函数优点:不占内存  ;缺点:没有入参判断,增加编译时间


函数指针:

    int  (*p)():表示一个指针,指向一个函数,函数没有形参,返回值为int型

例如

int (*p)(int, int);
p = add;
int add(int a,int b)
{
    return a+b ;
}
printf("%d\n",p(3,5);
输出为8

判断int * ( * ( *fp ) ( int ) ) [10]

fp是一个指针,指向一个函数,函数有一个int类型的形参,函数的返回值是一个指针,指向一个有10个元素的数组,每个元素是一个指针




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值