c语言const数组
时间: 2023-10-22 15:09:06 浏览: 38
const关键字用于声明一个不可修改的变量。在C语言中,如果我们使用const关键字来修饰数组,那么数组中的元素就不能被修改。下面是一个const数组的示例:
```c
#include <stdio.h>
int main() {
const int arr[] = {1, 2, 3, 4, 5};
// 尝试修改数组元素会导致编译错误
// arr[0] = 10;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
输出结果为:1 2 3 4 5
在上面的示例中,我们声明了一个const int类型的数组arr,并且初始化了5个元素。由于arr是一个const数组,所以我们无法修改数组中的任何元素。如果尝试修改数组元素,编译器会报错。
相关问题
c语言字符数组拷贝
在 C 语言中,可以使用 strcpy 函数来实现字符数组的拷贝。其函数原型如下:
```c
char* strcpy(char* dest, const char* src);
```
其中,dest 是目标字符数组的指针,src 是源字符数组的指针。该函数会把 src 中的字符串复制到 dest 中,直到遇到 '\0'(字符串结束符)为止,然后返回 dest 的值。
示例代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, world!";
char dest[20];
strcpy(dest, src);
printf("src: %s\n", src);
printf("dest: %s\n", dest);
return 0;
}
```
输出结果为:
```
src: Hello, world!
dest: Hello, world!
```
需要注意的是,如果目标字符数组 dest 的长度不够长,可能会导致字符串溢出的问题。因此,在拷贝字符串时,应该确保目标字符数组的长度足够长,或者使用 strncpy 函数来限制拷贝的字符数。
c语言结构体数组降序排序
以下是C语言结构体数组降序排序的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct Person {
int no;
int age;
int height;
};
int cmp(const void *a, const void *b) {
struct Person *pa = (struct Person *)a;
struct Person *pb = (struct Person *)b;
return pb->height - pa->height;
}
int main() {
struct Person array[] = {{1, 20, 170}, {2, 25, 180}, {3, 30, 175}};
int n = sizeof(array) / sizeof(struct Person);
qsort(array, n, sizeof(struct Person), cmp);
for (int i = 0; i < n; i++) {
printf("no:%d age:%d height:%d\n", array[i].no, array[i].age, array[i].height);
}
return 0;
}
```
解释如下:
- 首先定义了一个结构体`Person`,包含三个成员变量`no`、`age`和`height`。
- 然后定义了一个`cmp`函数,用于比较两个`Person`结构体的`height`成员变量,实现降序排序。
- 在`main`函数中定义了一个`Person`类型的数组`array`,并初始化了三个元素。
- 使用`qsort`函数对数组进行排序,其中第二个参数是数组元素个数,第三个参数是每个元素的大小,第四个参数是比较函数。
- 最后遍历数组并输出每个元素的成员变量。