黑马程序员 C语言一些常见的注意3

原创 2014年06月28日 20:40:09

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、

<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------

 C语言一些常见的注意3

1、(C语言字符串)C中是没有string类型的,它是用字符数组来表示字符串,定义格式是这样的:

char string[大小];字符串以’\0’字符(ASCII值为0)结尾,所以这样定义的字符数组不是字符串:

char a[] = {‘i’,’t’};因为它不是以’\0’结尾,但这样是char a[] = “it”;,当在使用%s输出上面的数组a

时可能会错,因为它会在内存中找到\0来结束。

2、printf默认情况下参数是常量字符串,若不是常量则会警告,但不会报错。

3、strlen()函数是求字符串的长度,但是注意它求得是长度是按字节长度来计算,并且长度到’\0’为止。

4、(C语言指针)指针变量只能存放地址,如:int *p; p = 20 ;这种写法是错的

注意int *p =xxx 和 *p = xxx 是不同的意思,前者只是定义了一个整型的指针变量,并且将xxx的地

址给p,后者的意思是访问p所指向的地址空间并将该空间里面内容换成xxx。例如:

int *p; // 定义一个整型的指针

int a = 10; // 现有一个变量a,假设它在内存的中地址是ffc1

p = a; // 该语句执行之后p的值为a 地址即:ffc1

*p = 15; // *p就表示访问ffc1这个地址所属的空间,该语句ffc1空间为15

   //也就是说可以通过两个变量(a和*p)访问15(ffc1地址空间内容)

5、对于未初始化的指针变量,我不能用来作为间接访问。如:

int *p;

printf(“%d”, *p); // 这样写是错误的

6、指向指针的指针,它的重点是一个指针,说明他存放的是一个地址,只不过它存放

的是指针的地址如:

int a = 13; // 假设有个变量a,地址为fff1

int *p = &a; // 有个指针p(一级指针)存放又变量a的地址

int **pp = &p; // 指针的指针中存放指针p的地址

分析:此时pp==&p当我们要访问&p地址所属的空间时即 *pp==p(&a) 同样的要想*pp

中存放的地址所指向的空间 *(*pp) ==*p(a),所以当*pp =14时,a 的值也跟着改,

说明fff1这个地址空间可以通过三个变量访问(a、*p、*pp)

7、要想一个函数返回多个值,我们可以通过指针来时实现

8、如果用指针变量指向与之不同类型的变量的地址,得到的值会出错,如:

int a = 2; // 在内存中分配4个字节

char b = 1; // 在内存中分配1个字节

int *p = &b; // 本来在内存中占一个字节的b却用了4个字节的指针p

printf(“%d”, *p); // 输出的*p按理说应该是1,但实际上不是它是513,内存泄露

9、各种格式说明符:int (%d)、flout/double(%f)、char(%c)、char *(%s)、long(%ld)、

longlong(%lld)、unsigned long(%zd)。


---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、

<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------


C语言的一些常见问题

一.static 关键字的作用1.隐藏,当我们同时编译多个文件时,所有未加 static 前缀的全局变量和函数都具有全局可见性. 2.static 的第二个作用是保持变量内容的持久.存储在静态数据区的...
  • xuehongnizhao
  • xuehongnizhao
  • 2016年01月21日 16:53
  • 642

黑马程序员 C语言的常见的一些注意 5

1、(结构体)数组存储多个相同类型的数据,结构体可以存放不同类型的数据。结构体变量只能在初始化的时候采用{}的形式赋值,由于0开头是八进制,所以09这样的形式是错误的表示。结构体之间的变量赋值 a =...
  • MeditatingPig
  • MeditatingPig
  • 2014年06月29日 11:21
  • 339

黑马程序员——C语言基础篇---基础语法

黑马程序员学习日志,C语言的基础学习
  • liufeng124
  • liufeng124
  • 2015年04月13日 22:10
  • 521

黑马程序员——c语言学习---第一个程序

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------  从今天开始我漫长的编程之旅,提前预祝自己成功! 1、开发条件 a、mac...
  • qq_25842885
  • qq_25842885
  • 2015年02月05日 12:46
  • 360

黑马程序员 C语言一些较为常见的注意

C语言一些注意 1、以分号结尾的是一条语句,尽管可能a;、1233;、a==3;这样的形式,但编译器不会报错 2、if语句的条件里面可以是一般的赋值语句,编译器不会报错,如:if( a=5 )这样...
  • MeditatingPig
  • MeditatingPig
  • 2014年06月27日 08:06
  • 317

黑马程序员 C语言一些常见的注意6(尾)

---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ---------------------- C语言一些常见的注意6(尾)...
  • MeditatingPig
  • MeditatingPig
  • 2014年06月29日 18:44
  • 505

黑马程序员 C语言常见的一些注意4

---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ---------------------- ------...
  • MeditatingPig
  • MeditatingPig
  • 2014年06月29日 09:11
  • 292

黑马程序员-----c语言基础与重点第一篇——C知识基础

------- android培训、java培训、IOS培训.Net培训、、期待与您交流! ----------     本系列博客主要描述c语言基础与OC语言基础。大家可随时沟通交流。根据学习做一...
  • u010864317
  • u010864317
  • 2015年08月17日 16:07
  • 328

黑马程序员---C语言学习笔记之五

------- android培训、java培训、期待与您交流! ---------- 1.位段(位域)   使用伪指令#pragma pack (n),编译器将按照 n 个字节对齐;   使用伪...
  • yafengxnbh
  • yafengxnbh
  • 2015年03月16日 14:55
  • 184

C语言需要注意的地方

今天看了一本C陷阱与指针的书,从中挑选了一些我自己平常不太注意的地方,或者有些是记不太清的东西,稍微整理了下有以下这些地方: 1:=与==是不同的,一个是赋值,一个是比较 2:&与&&是不同的,前...
  • chuhang_zhqr
  • chuhang_zhqr
  • 2016年01月27日 23:10
  • 497
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员 C语言一些常见的注意3
举报原因:
原因补充:

(最多只允许输入30个字)