辽阳网站建设多少钱,wordpress上传js,龙岗附近做网站公司,广告网站建设网站排名优化目录: 8.const 修饰指针 *修饰普通变量 *修饰指针变量 9.指针运算 *指针或-整数 *指针-指针 *指针关系运算 往期推荐 承接上篇37.【C语言】指针#xff08;重难点#xff09;#xff08;B#xff09;
8.const 修饰指针
const 全称 constant adj.不变的
*修饰普通变量
#… 目录: 8.const 修饰指针 *修饰普通变量 *修饰指针变量 9.指针运算 *指针或-整数 *指针-指针 *指针关系运算 往期推荐 承接上篇37.【C语言】指针重难点B
8.const 修饰指针
const 全称 constant adj.不变的
*修饰普通变量
#include stdio.h
int main()
{const int num 0;num 20;printf(%d\n, num);return 0;
}
这样写会报错 说明const修饰的值不可改变
注:在C语言中这里的num是常变量num的本质还是变量因为有const修饰编译器在语法上不允许修改这个变量;而在C语言中这里的num就是常量 如果要强行改变用指针
#include stdio.h
int main()
{const int num 0;int* pi num;*pi 2;printf(%d\n, num);return 0;
} 但显然已经违反常变量的语法规则需要限制指针的行动--const修饰指针变量 *修饰指针变量
三种写法
1.const 放在*的左边
如const int* pi num; int const * pi num; 语法规则指针指向的内容不能通过指针来改变,但是指针变量本身的值是可以改
*pi?; 错误 pin;正确
2.const 放在*右边
如int* const pi num; 语法规则 指针指向的内容能通过指针来改变,但是指针变量本身的值是不可改
*pi?; 正确 pin;错误
3.const 放在*的左右两边
如const int* const pi num;
语法规则由1,2推 指针指向的内容不能能通过指针来改变,且是指针变量本身的值是不可改
9.指针运算
*指针或-整数
在37.【C语言】指针重难点B中已提到一些内容
练习因为数组在内存中连续存放所以可以用指针打印数组
#include stdio.h
int main()
{int arr[10] { 0,1,2,3,4,5,6,7,8,9 };int* pi arr[0];int lengthsizeof(arr)/sizeof(arr[0]);for (int i0;ilength;i){printf(%d , *(pii));//注意pi不变}return 0;
} *指针-指针(即地址-地址)
大地址-小地址 和 小地址-大地址 注意有正负
#include stdio.h
int main()
{int arr[10] { 0,1,2,3,4,5,6,7,8,9 };printf(%d,arr[8] - arr);return 0;
} 总结当两个指针指向同一个空间时(指针-指针)的绝对值指针之间的元素个数
进一步思考 求字符串长度 1.strlen函数 strlen(数组); 统计\0之前的元素个数 #include stdio.h
int main()
{char arr[] { asdfghjk };size_t resultstrlen(arr);printf(%d, result);return 0;
} 具体见20.5.【C语言】求长度sizeof和strlen的两种方式 2.用指针 未遇到\0则指针 #include stdio.h
int main()
{char arr[] { asdfghjk };char* pi arr;//数组名就是数组名[0]int result 0;//可以简写成while (*pi) \0的ASCI值是0while (*pi ! \0)//未到\0则继续循环{result;pi;//指针移动}printf(%d, result);return 0;
} 也可以改成指针-指针 printf(%d, pi-arr); *指针大小关系运算
可以用来打印数组
#include stdio.h
int main()
{int arr[] { 0,1,2,3,4,5,6,7,8,9 };int* pi arr;int sz sizeof(arr) / sizeof(arr[0]);while (pi arr[sz])//arr[sz]越界不会产生影响{printf(%d , *pi);pi;}return 0;
} 往期推荐
19.【C语言】指针重难点A
37.【C语言】指针重难点B