标签:c语言误区
关于C语言的学习,觉得在指针和数组上还是存在些误区。在空闲时自己写了点小小的个人体会,觉得写得不是很好,只是个人的小小心得体会,写得不好的,还请各位高手见谅,指点下误区,联系方式738254743@qq.com,
还望各位高手赐教。
========================================
C语言中一切变量就是内存,定义变量就是申请内存
======================================
1.字符串
======================================
1. 字符串在内存中以字符数组的形式存在,以‘\0‘结束,长度:字符数+1;
字符串在运算中:首地址赋地址,取字符串时不需要*(比如: char *p="gght"; printf("%s", p);),但取字符时需要加*;
字符串运算循环结束标志:判断p[i]==‘\0‘; 或者 strlen(p);
sizeof(p)/sizeof(p[0])---->容量
sizeof计算整个数组的总大小
strlen计算字符串本身的大小,不含‘\0‘
=======================================
2.数组和指针
=======================================
1. 指针和其他类型的互换:既是地址
a.int a; int *p; p=&a;
b.int a[3]; int (*p)[3]; p=&a;
c.int *a[3]; int *(*a)[3]; p=&a;
2. 数组运算时视为指针,首地址与运算
3. 数组长度:如:char a[]; sizeof(a)/siaeof(a[0])-1;
4. 数组和指针运算:
如:
int a[3]; | int a[3];
int *p; | int *p[3];
p=a; | p=&a;
a[i]=*(p+i); |
指针和数组运算时:分两部分:第2部分相同则取 :首地址
第2部分不相同则取 :&:整个地址
指针的sizeof()=4; 只要是指针就是不变的定理
<5>. 数组的灵活使用:
char * a[] : 分为两部分:1: a[]; 2: char*;
char a[] : 分为两部分:1: a[]; 2: char;
=========================================
3.复杂声明阅读
=========================================
阅读方式 :找出第一个非关键字符,以他为中心剥洋葱似的解析
如:void (* signed(signed, void(*p)int)) int
typedef tmp void (*) int
tmp signed(signed, tmp p)
=========================================
4.数据类型
=========================================
1.重定义:
typedef long int32_t; 定义int32_t 为long 4字节
typedef short int32_4 定义int32_t 为short 4字节
int 4 字节 ,char 1 字节, short 2 字节, long 4 字节;
double : %lf float : %f;
2. 强制类型转换:
如: int p;
(char) p; int--->char
==========================================
5.内存
==========================================
OS------>操作系统
|
|
栈------>局部变量,形参(函数运行结束后,内存给释放)
|
|
堆------>malloc(),calloc(),realloc()分配内存,必须和free()连用
|
|
数据段---->全局变量,static变量(函数运行结束后,内存不释放)
=======================================
6. 调试
=======================================
#ifdef x;
printf("..", x);
#enif
调试部分编译时:gcc --.c -o .. -Dx 才有效
---------------------------------->完成于:2015年3月10日
本文出自 “C语言误区” 博客,请务必保留此出处http://10443940.blog.51cto.com/10433940/1663513
标签:c语言误区
原文地址:http://10443940.blog.51cto.com/10433940/1663513