C指针笔记

来源:互联网 发布:java native作用 编辑:程序博客网 时间:2024/06/03 18:13
C指针笔记(GCC编译器)
    分享下C学习过程中指针的用法,暂时也就分析一级指针
       其实呢,指针变量说白了就是一个变量,只是存储的内容是一个地址罢了。
    下边举例说明一些常见的问题,
字符串就是一个地址
下边这是一个关于转换进制的问题,把10进制转换为16进制输出,
可能这样程序在实际开发中用的不太多吧,但是我感觉对理解知识应该起到不少的作用
1 #include<stdio.h>  2 int main()  3 {  4     int n;  5     scanf("%d",&n);  6     printf("%c\n","0123456789ABCDEF"[n]);  7     return 0;  8 }</span>
上边这个例子中说明,字符串"0123456789abcdef"就是一个地址,地址后跟[n]说明
取地址后第N个字节中的内容等价于数组 跟 *(首地址 + n); 差不多是等价的
下边这个是大家熟悉的hello,world

 1 #include<stdio.h>  2 int main()  3 {  4     char *p = "hello,world\n";  5     printf(p,0);  6     return 0;  7 }</span>

估计这俩程序在开发中是真没出现过,不过这能让你知道一件事,那就是C中的字符串就一地址罢了。

C语言中指针跟数组的区别
  1 #include<stdio.h>  2 #include<string.h>  3 int main()  4 {  5     char *p = "123";  6     char arr[] = "123";  7   8     p = "456";  9 //  arr = "456"; 10  11 //  strcpy(p,"456"); 12     strcpy(arr,"456"); 13  14     p++; 15 //  arr++; 16     return 0; 17 }  
上边程序中,注释的地方都是错误的,由此可见C语言中数组跟指针还是有一定的区别。
第一个错误:对一个数组名赋值,(如果是指针赋值很正常);
第二个错误:把字符串拷贝到了一个只读常量区。
第二个错误:对一个数组名赋值,跟第一个错误一样。
"c语言中对于一个数组我们只能做两件事,确定该数组的大小,以及获得指向该数组下标为0的元素的指针。" ----摘自《C陷阱和缺陷》


持续更新,以后慢慢补充,时间有限,
 


0 0
原创粉丝点击