C语言int(*p[4])[4] =null;是什么
时间: 2023-08-30 14:06:19 浏览: 48
C 语言中 `int (*p[4])[4] = null;` 是一个数组指针数组的声明,其中:
- `p` 是一个数组,它包含了 4 个元素;
- 每个元素都是一个指向 4 个整型变量的指针,即 `int (*)[4]`;
- 初始化为 `null`,表示这个数组指针数组中的所有指针都是空指针。
这个声明可以用于定义一个二维数组,例如:
```c
int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int (*p[3])[4] = {&arr[0], &arr[1], &arr[2]}; // 将 arr 数组的行指针赋值给 p 数组
```
在这个示例中,我们声明了一个名为 `arr` 的二维数组,它包含 3 行 4 列,即可以看做是 3 个长度为 4 的一维数组。然后我们定义了一个名为 `p` 的数组指针数组,它包含 3 个指针,每个指针都指向长度为 4 的一维数组。通过将 `arr` 数组的每一行的指针赋值给 `p` 数组中的对应元素,就可以实现 `p` 数组指向 `arr` 数组的每一行了。
相关问题
void swap(int *i,int *j) { int *x=NULL; *x = *i; *i = *j; *j = *x; }
这个函数`void swap(int *i, int *j)`是一个简单的C语言实现,它的作用是交换两个整数变量的值。函数接受两个整数指针`i`和`j`作为参数。函数内部首先定义了一个临时指针`x`并将其初始化为`NULL`。
接下来的三行代码是实现交换的核心部分:
1. 将`i`指向的值赋给临时变量`*x`,即把`i`指向的数值复制到`x`。
2. 将`j`指向的值赋给`i`所指向的位置,实现了`i`的值被`j`的值替换。
3. 最后,将`x`(现在存储了原来`i`的值)赋给`j`,实现了`j`的值也被`i`原来的值替代。
这样,调用这个函数后,`i`和`j`就分别指向了对方原来的值,完成了它们之间的值交换。
int* p与 int *p
int* p与int *p是等价的,都表示定义一个指向int类型的指针变量p。星号可以靠近int或者靠近p,没有区别。这是因为星号是用来修饰p的,而不是修饰int。所以int* p和int *p都是有效的写法。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [int* p;和int *p;应怎样理解(c++语言中星号的位置)?](https://blog.csdn.net/qiuyeyijian/article/details/88080549)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [C语言中指针 int *p=0;和int *p;*p=0;和”&“的关系和区别详解](https://download.csdn.net/download/weixin_38537941/14851842)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]