C——指针

1. 指针保存的是内存地址,但是指针是有类型的,内存地址是没有类型的;
2. 指针类型的数据大小和指定的平台位数有关,指定32位系统,指针占4字节,指定64位系统,占8字节。注意:是编译器指定的位数,跟电脑系统的位数没有关系;
#include <stdio.h>
void main(){
int a = 10;
int* p = &a;
printf("int pointer size -->%d\n", sizeof(p));
printf("p-->%x\n", p);

double f =8.12;
int* fp = &f;
printf("double pointer size -->%d\n", sizeof(&f));
printf("f value -->%f\n", *fp);
printf("a -->%f\n", *&f);

getchar();
}

3. 指针和数组
数组的地址就是数组中第一个元素的首地址,a==&a[0];
#include <stdio.h>
void main(){
int a[] = { 10, 20, 30, 40 };
printf("a-->%x\n", a);
printf("a0-->%x\n", &a[0]);
int* p = a;
printf("p-->%x\n", p);
printf("a1-->%x\n", a[1]);
printf("p1-->%x\n", *(p+1));
printf("size of a %d \n", sizeof(a));
int aLenth = sizeof(a) / sizeof(int);//获取a数组的大小
for (int i = 0; i < aLenth; i++)
{
*p = 100 + i;//用指针遍历数组
p++;// 指针运算,直接跳到下一个地址,每次+sizeof(p);
}

for (int i = 0; i < aLenth; i++)
{
printf("a[%d]-->%d\n", i, a[i]);
}
getchar();
}

4. 函数指针
传入函数的地址,执行此函数
#include <stdio.h>

#define log() printf("func here %s\n", __FUNCTION__)
int add(int a, int b){
log();
return a + b;
}

int minus(int a, int b){
log();
return a - b;
}

void methodPointer(int(*func_p) (int, int),int a,int b){
printf("\nresult-->%d\n",func_p(a, b));
}


void main(){
methodPointer(add, 10, 20);
methodPointer(minus, 10, 20);
getchar();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值