c语言基础-指针初探

c语言基础-指针初探

一、指针的概念

指针就是地址

二、指针的定义

指针类型 *指针变量名;
指针类型 *指针变量名 = 赋初值(地址);

什么是指针类型:
指针指向地址的数据类型

指向某个数据类型的变量

例子:
#include <stdio.h>
int main(void)
{
int xyd = 5;
int p=&xyd; // 定义一个指针 * 在指针定义的时候只是标识这个变量是指针,并没有任何运算意义
// 在定义指针变量的同时对指针初始化 & 取地址
return 0;
}

#include <stdio.h>

int main(void)
{
int xyd;
int *p = &xyd;
char *xp = (char *)p; // 指针类型的强制转换
// 指针原本指向为4字节空间
// xp指向同一个空间,寻址一字节
return 0;
}

三、const修饰指针

#include <stdio.h>

int main(void)
{
// const 常变量 常的变量
// 常量:一个固定数值,不占用存储空间
// 变量:一个固定的存储空间,里面的值可以被修改
// 常变量:也是一个固定的存储空间,里面的值不可以被修改 本质还是变量
//int const c = 6; // 常变量必须在定义的时候就初始化
const int c = 6; // 没区别 const在修饰普通变量的时候位置无所谓
int a = 5;
a = 6;

//c = 8;   // 常变量的值不能够被修改

getchar();
return 0;

}

#include <stdio.h>

int main(void)
{
// 左值右址不能变(只存在于用指针调用的时候)
// const 在号的 左边 修饰指针变量,指针所指向地址里面的值不能变,指向的地址可变
// const 在
号的 右边 修饰指针变量,指针所指向的地址不能变,指针里面的值可以变
int a = 5;
int b = 6;
const int *p = &a;
a = 6; // 可以 锁的只是指针,并不影响变量本身的使用,只是通过指针访问的时候限制
*p = 8; // 不可以
p = &b; // 可以 指向可变
*p = 9; // 不可以 通过指针不能修改变量的值
return 0;
}

#include <stdio.h>

int main(void)
{
// 左值右址不能变(只存在于用指针调用的时候)
// const 在号的 左边 修饰指针变量,指针所指向地址里面的值不能变,指向的地址可变
// const 在
号的 右边 修饰指针变量,指针所指向的地址不能变,指针里面的值可以变
int a = 8;
int b = 7;
int *const p = &a;
a = 9; // 可以
*p = 9; // 可以 值可变,地址不可变
p = &b; // 不可以 指针存储的地址不可变
return 0;
}

四、函数指针:

函数名就是函数的首地址

#include <stdio.h>

void fun(void);

int main(void)
{
void (*p)(); // 定义函数指针 这个指针指向一个函数
p = fun;
p(); // 通过函数指针调用函数
getchar();
return 0;
}

void fun(void)
{
printf(“this is a c!!\n”);
}

指针作为函数的返回值:

char* fun(…………)

return 地址;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值