C pointers

指向整型数组指针
int (*p)[10] = matrix;
增加这个指针的值使它指向下一个整型数组

指向整型指针
int *pi = &matrix[0][0];
int *pi = &matrix[0];
可以增加指针的值使它指向下一个整型元素

在C语言中,“cast”通常指类型转换,而“Object Pointers”的含义是指向对象的指针。当我们谈论将指针进行类型转换(即“casting object pointers”),我们实际上是在讨论如何改变一个指针原本指向的数据类型的解释方式。 ### 指针类型转换的基本概念 当我们将一种数据类型的指针转化为另一种数据类型的指针时,这是通过强制类型转换完成的,在语法上表现为`(type *)pointer`的形式。“(type *)”表示你要将其后的指针视为指定类型变量地址的一个引用。例如: ```c int a = 10; float *fp; // 强制把 int 类型 &a 转换为 float* 类型,并赋值给 fp. fp = (float *)&a; // 这里做了 cast 的操作。 ``` 尽管上面的例子展示了这种技术的可能性,但是要注意的是直接对不同基本数据类型的指针之间做这样的转型可能会引发未定义的行为,除非你确切地了解底层内存布局并且清楚这样做不会违反任何规则。 #### 应用场景举例: - **结构体成员访问**:有时候我们需要从某个特定函数返回通用void*指针,然后根据上下文把它转回具体的结构体型以便存取其内部字段; ```c struct Node { int value; char name[5]; }; void some_function(void*); struct Node node={42,"abcd"}; some_function((void*)&node); // Inside the function call... void some_function(void *p) { ((struct Node*) p)->value +=1 ; // 使用了 type casting 将 void* 变成 struct Node* } ``` 注意上述例子仅用于说明目的;实际应用需考虑更复杂的边界条件及安全性措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值