C语言指针透析

转载https://www.cnblogs.com/lulipro/p/7460206.html

 

笔记:


查找内存最大地址方法

printf("ch 的地址:%p\n", &ch);输出地址
printf("ch :%p\n", ch); 输出16进制  97-->61   'a'-->61
那么怎么输出'a'

malloc申请的堆内存

typedef 类型定义

printf("age = %d\n",age);

printf("%s",msg);

地址为0的内存,是为操作系统预留的。存的是0或((void *)0)

int arr[3] = {1,2,3};
int*p = arr;
for(;p!=arr+3;p++){
    printf("%d\n",*p); 
}  --指针指向下一个同类型的内存块

C语言中,实参传给形参,是值传递,而不是地址传递

const int *p1;
int const *p2;
int * const p3;
最后一种是指针是只读的,p3本身的值不能被修改;前面两种情况是指针指向的数据是只读的,不能通过指针改变对应的数据。


C语言中的程序数据会按照他们定义的位置,数据的种类,修饰的关键字等因素
栈区、堆区、静态数据区、方法区。

通过指针传递数据给函数不是为了在函数中改变它指向的对象,是为了防止这个目标数据被改变。传递指针只是为了避免拷贝大型数据。

每个函数本身也是一种程序数据,一个函数包含了多条执行语句,它被编译后,实质上是多条机器指令的集合。
在程序载入到内存后,函数的机器指令存放在一个特定的逻辑区域:代码区。既然是存放在内存中,那么函数也是有自己的指针的。
C语言中,函数名作为右值时,就是这个函数的指针。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值