黑马程序员 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语言较为常见的注意2

1、返回值不写默认就是int而不是void,void的返回值是return;并且有返回值的可以不用不用写,编译器不会报错,只是警告。 12、如果只有函数的声明,没有实现,则函数会在链接(检测函数,变...

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

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

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

---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ---------------------- ------...

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

---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ---------------------- C语言一些常见的注意6(尾)...

黑马程序员--Objective-C语言基础知识--Foundation框架的常见用法

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- Foundation框架简介框架是由很多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使开发变得更容易。...

黑马程序员-iOS基础-Unix常见指令及C语言基础(一)

Unix常见指令及C语言基础(一) 一、Unix常见指令: 因为Mac系统是基于Unix系统的,因此可以在“终端”中输入一些指令来操作Mac系统。常用的Unix指令有: 指令 作用 ls...

【黑马程序员】C语言学习笔记(3)-预处理指令

C语言源程序在进行编译、链接之前会进行检测是否有一些特殊的预处理指令,若检测一些特殊的预处理指令则会进行相应的处理。C语言中多有的预处理指令都以符号“#”开头,并且结尾不使用分号。预处理指令在程序中出...

3、黑马程序员-C语言的数据、常量和变量

一、数据 图片文字等都是数据,在计算机中以0和1存储。       (一)分类 数据分为静态数据和动态数据。 ①. 静态数据:一些永久性的的数据,一般存储在硬盘中,只要硬盘没坏数据都是存在的。一般以文...
  • zwcshy
  • zwcshy
  • 2014年12月01日 19:59
  • 230

黑马程序员 ---C语言入门疑难点---3

------- android培训、IOS培训、期待与您交流! ----------
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员 C语言一些常见的注意3
举报原因:
原因补充:

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