徐建岗网络管理 2020-06-11
const int num = 10; num = 20; // 报错:Cannot assign to variable ‘num‘ with const-qualified type ‘const int‘,不能为 const 修饰的变量进行赋值
const int nums[5] = {1,2,3,4,5}; nums[0] = 10; // 报错:Cannot assign to variable ‘nums‘ with const-qualified type ‘const int [5]‘ const int nums[5] = {1,2,3,4,5}; // 完全初始化不能修改 // nums[0] = 10; const int nums1[5] = {1,2}; // 部分初始化也不能修改 // nums1[3] = 30; const int nums2[3]; // 未初始化的也不可以 // nums2[0] = 10;
int num = 10; const int* pnum = # // 无法通过指针去修改指针变量指向的变量的值 *pnum = 100; // 只读变量不可修改 printf("num = %i\n",num);
// 修饰指针: const int * pnum / int const *pnum -->修饰的*pnum // int num = 10; // const int* pnum = # // 无法通过指针去修改指针变量指向的变量的值 // *pnum = 100; // 只读变量不可修改 // printf("num = %i\n",num); // 修饰指针: int * const p1 = # --> 修饰的 p1 int num = 10; int * const p1 = # *p1 = 100; // 修改值是可以的 printf("修改值后的 num 值:%i\n",num); int age = 20; // p1 = &age; // 此时不能修改p1 的值,也就是只能指向这个地址,不能指向别的地址,还能修改变量的值 //修饰指针:int const * const pnum = # -->修饰的* pnum 和 pnum int num2 = 30; int const * const pnum = # // *pnum = 300; // 不可修改 int num3 = 40; // pnum = &num3; // 不可修改
void fornum(int arr[],int len); void conForNum(const int arr[],int len); int main(){ // const 应用场景 // 我要写一个函数,但是不能修改我数组的值 int arr[] = {1,23,45,6,7,8,9,5,3,234,423,4}; int len = sizeof(arr) / sizeof(arr[0]); fornum(arr,len); // 哇此时发现被其他函数调用了但是,我的数组值可能被修改了 for (int i = 0 ; i < len; i++) { printf("main 函数中的 arr 数组的值arr[i] = %i\n:",arr[i]); // 因为传递的指针,所以函数中修改了我这里也修改了,那么怎么能保证我的数据不能被修改,我只给你用但是你不能修改 }; int arr2[] = {1,2,4,5,6,78,9}; int len2 = sizeof(arr2) / sizeof(arr2[0]); conForNum(arr2, len2);// return 0; } void fornum(int arr[],int len){ for (int i = 0 ; i < len; i++) { arr[i] = arr[i]+10; printf("arr[i] = %i\n",arr[i]); }; } void conForNum(const int arr[],int len){ for (int i = 0 ; i < len; i++) { // arr[i] = arr[i]+10; // 报错:只读变量不可赋值 printf("arr[i] = %i\n",arr[i]); }; }