指针小结——C语言
最近发现自己C语言基础还是很薄弱,去广图借了本《C指针原理揭秘——基于底层实现机制》深入学下指针
命令行输入参数
大家想必都在windows中使用过ping 127.0.0.1 -t,其中这些参数怎么来的呢?看下面
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
while(*++argv!=NULL)
printf("%sn",*argv);
return 0;
}
我们平时直接就int main(),入口参数什么都不填,但在这里的(int argc,char **argv)代表了不一样的意思
其中argc代表的是输入的命令的个数,其中命令本身也是参数之一,那argc>=1
而argv就是一个指针,指向参数数组元素,利用argv指针特点,可判断参数数组中参数的个数,也就是说循环向后移动argv指针,当指向NULL的时候就代表参数列表结束
上个例子中使用了解引用的操作,就把所有的参数取出来。
常量指针
字符串常量指针
#include <stdio.h>
int main(int argc,char **argv)
{
printf("%s","abcdefgh"+2);
return 0;
}
在这里运行结果就可以得到"cdefgh",字符常量可以直接作为指针基址,加上偏移步长(向右跳过的字符数),可以得到余下的字符串的起始地址。
const指针
- 指针指向的内容不可变,但指针本身可以改变
C const int* a; int const *a;
- 指针本身不能变,指向的内容可以修改
C int* const a;
- 指针本身不能改变,指向的内容也不能改变
C const int* const a;
很多时候很容易混淆,怎么记住呢?主要看c