有没有int *b[10]这种写法呀
时间: 2023-12-01 18:02:43 浏览: 39
有的,int *b[10]是一个数组,数组中的每个元素都是一个指向int类型的指针。这种写法可以用来定义一个指针数组,其中每个指针指向一个int类型的变量。例如,可以通过以下方式来定义一个包含10个指向int类型变量的指针数组:
```
int a = 1, b = 2, c = 3, d = 4, e = 5, f = 6, g = 7, h = 8, i = 9, j = 10;
int *ptr[10] = {&a, &b, &c, &d, &e, &f, &g, &h, &i, &j};
```
这样,ptr[0]指向变量a,ptr[1]指向变量b,以此类推,直到ptr[9]指向变量j。
相关问题
int* a和int *a区别
在C/C++中,"int* a"和"int *a"都是声明一个指向整数的指针变量。它们的语法稍有不同,但在功能上是等价的。
"int* a"将星号(*)与变量名"a"紧密相连,这种语法强调了指针是一个整体。这种写法在声明多个指针时更具可读性,例如 "int* a, b, c;"。
另一方面,"int *a"将星号(*)与类型名"int"相连,这种语法强调了指针是一个特定类型的变量。这种写法在声明单个指针时更常见,例如 "int *a;"。
无论你使用哪种语法,它们都可以用来声明指向整数的指针变量,并且在使用指针时没有区别。选择哪种写法主要是个人偏好和代码风格的问题。
int a(const void *buf) 此时 b=[10],c=[10],a(b){b = (const void*)c}这个写法是否合法
在C++中,你提供的写法是合法的,但是你需要注意几个问题。
首先,函数声明 `int a(const void *buf)` 表示函数 `a` 接受一个指向常量 `void` 的指针作为参数,并返回一个整数类型的值。
然后,在函数调用 `a(b)` 中,你将数组 `b` 作为参数传递给函数 `a`。由于 `b` 是一个数组,它会自动转换为指向数组首元素的指针。因此,实际上你传递给函数 `a` 的是一个指向常量 `void` 的指针。
接下来,在函数体内部的赋值操作 `b = (const void*)c` 是合法的,因为你将 `c` 的地址强制转换为了一个指向常量 `void` 的指针,并将其赋值给了 `b`。这样就改变了 `b` 的指向,让它指向了数组 `c` 的首元素。
总结起来,你提供的写法在语法上是合法的。但是请注意,这种类型的转换可能引入类型安全问题,并且在实际使用中可能会导致未定义行为。确保在进行类型转换时充分考虑类型兼容性和安全性。