指针的和差积商c语言,C语言指针一

指针

指针变量?

指针变量和普通变量一样, 都是用来保存数据的

只不过和普通变量有一点区别, 普通变量可以保存int/char/float/double等类型的数据

指针变量只能保存内存地址

简而言之, 指针变量, 就是专门用于保存内存地址的变量

指针变量的定义

int *p;

注意点:

所有的指针变量占用的内存大小都一样,在32位编译器中, 占用4个字节,在64位编译器中, 占用8个字节

int num;

num = 9;

int *p;

p = #

将num变量的占用内存最小的那个地址存储到指针变量p中

只要一个变量中存储了另外一个变量的内存地址, 那么我们就说这个变量指向了另外一个变量

只要一个变量中存储了另外一个变量的内存地址, 那么我们就可以根据这个内存地址找到另外一个变量的内存,从而操作那一块内存

printf("&num = %p\n", &num); // &num = 0060FEA8

// p和普通变量一样, 代表取出p中存储的值

printf("p = %p\n", p); // p = 0060FEA8

// printf("num = %i\n", num);

// &p和普通&变量也一样, 代表取出p自己的内存地址

printf("&p = %p\n", &p);

用指针访问内存空间

只要一个变量保存了另外一个变量的地址, 就代表这个变量指向了另外一个变量

只要一个变量指向了另外一个变量, 就可以通过*变量名称方式, 操作另外一个变量的内存空间(即解引)

// 1.定义一个普通变量

int num;

num = 6;

// 2.定义一个指针变量

int *p;

// 3.利用指针变量, 保存某个变量的地址

p = # // 将num的内存地址存储到了变量p中

printf("修改之前: %i\n", num);//6

// num = 8;

*p = 4; // 在指针变量前面加上*号, 代表访问指针指向的那块内存

printf("修改之后: %i\n", num);//4

printf("修改之后: %i\n", *p);//4

指针注意点

1.指针只能保存地址, 不能保存其它的值

2.一个变量可以被多个指针指向

3.指针的指向可以改变

4.定义指针变量时前面的数据类型, 必须和将来要保存的变量前面的数据类型一致

指针的内存表现

int num = 9;

int num2 = 10;

int *p1,*p2;

p1 = #

p2 = &num2;

999e04e37995?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

指针具有类型

指针为什么要有类型?

由于指针变量指向的是某一个变量

所以在获取指向变量中存储数据的时候, 指针是不知道要获取多少个字节的数据的

所以指针变量的数据类型的作用, 就是告诉指针, 在获取指向变量的数据的时, 需要获取几个字节的数据

指针案例

#include

//int sum(int num1, int num2);

void test(int num1, int num2, int *res1, int *res2, int *res3, int *res4);

int main()

{

// 需求: 要求定义一个函数, 可以同时返回两个变量的和,差,积,商

// 需要大家知道的是: 在C语言中, 默认情况下一个函数只能返回一个值

// 如果想让某一个函数同时返回多个值, 可以借助指针来实现

int a = 10;

int b = 20;

// int res = sum(a, b);

// printf("res = %i\n", res);

int d, e, f, g;

test(a, b, &d, &e, &f, &g);

printf("和 = %i\n", d);

printf("差 = %i\n", e);

printf("积 = %i\n", f);

printf("商 = %i\n", g);

return 0;

// printf("return 后面的语句\n");

}

/**

* @brief test 可以同时返回两个变量的和,差,积,商

* @param num1 参与运算的第一个变量

* @param num2 参与运算的第二个变量

* @param res1 和

* @param res2 差

* @param res3 积

* @param res4 商

*/

void test(int num1, int num2, int *res1, int *res2, int *res3, int *res4){

*res1 = num1 + num2;

*res2 = num1 - num2;

*res3 = num1 * num2;

*res4 = num1 / num2;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值