c语言中const修饰符

 

c语言中const修饰符

001、不使用const修饰符

[root@PC1 test]# ls
test.c
[root@PC1 test]# cat test.c          ## 测试c程序
#include <stdio.h>
void print_array(int v[], int n);

int main(void)
{
        int ay1[] = {1,2,3,4,5};
        print_array(ay1,5);
        return 0;
}

void print_array(int v[], int n)
{
        v[1] = 1111;                // 在函数中修改传入的形参数组的值, 可以修改
        int i;
        for(i = 0; i < n; i++)
        {
                printf("v[%d] = %d\n", i, v[i]);
        }
}
[root@PC1 test]# gcc test.c -o kkk         ## 编译
[root@PC1 test]# ls
kkk  test.c
[root@PC1 test]# ./kkk
v[0] = 1
v[1] = 1111
v[2] = 3
v[3] = 4
v[4] = 5

 

002、使用const修饰符

[root@PC1 test]# ls
test.c
[root@PC1 test]# cat test.c          ## 测试c程序
#include <stdio.h>
void print_array(int v[], int n);

int main(void)
{
        int ay1[] = {1,2,3,4,5};
        print_array(ay1,5);
        return 0;
}

void print_array(const int v[], int n)         // 此处的数组形参使用const修饰符
{
        v[1] = 1111;                          // 在函数内对数据的元素进行修改,报错
        int i;
        for(i = 0; i < n; i++)
        {
                printf("v[%d] = %d\n", i, v[i]);
        }
}
[root@PC1 test]# gcc test.c -o kkk                   ## 编译,报错
test.c:11:6: error: conflicting types for ‘print_array’
 void print_array(const int v[], int n)
      ^
test.c:2:6: note: previous declaration of ‘print_array’ was here
 void print_array(int v[], int n);
      ^
test.c: In function ‘print_array’:
test.c:13:2: error: assignment of read-only location ‘*(v + 4u)’
  v[1] = 1111;
  ^

 。

 

const修饰符的作用, 在函数的形参数组前使用const修饰符,保证在函数体中数组的元素不能被修改。

 

posted @ 2024-11-13 00:49  小鲨鱼2018  阅读(1)  评论(0编辑  收藏  举报