黑马程序员-----------C语言基础-----------指针(一)
2015-08-15 21:18
585 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一:以字符串的形式输入输出
1.使用的格式字符串为“%s”,表示输入,输出的是字符串。
2. 用%s输出一个字符串时,需给定字符数组首地址。
3.用%s接收键盘输入的一个字符串,输入时注意如果输入的字符串有空格,则空格之后的字符无法被接收保存
二:字符串处理函数
1.使用其他字符串函数应该包含头文件"string.h"。例如使用strcat()需要包含string.h头文件,puts()和gets()需要包含stdio.h头文件
2.字符串输出函数 puts()
格式: puts(字符数组名);
以前输出字符串:
char str[]="abc";
printf("%s\n",str);
用puts()函数:
puts(字符数组名);
3.字符串输入函数 gets()
格式: gets(字符数组名);
以前输入字符串:
char str1[100];
scanf("%s",str1);
用gets()函数:
gets(字符数组名);
使用gets()函数可以接受包含空格的字符串。
4.连接两个字符串 strcat()
//必须引入头文件"string.h"
格式: strcat(A,B);
注:1)字符数组A的长度要足够能保存下字符串A+B的长度。
2)B把A字符串的最后一个字符\0覆盖后连接在A后面。
5.字符串拷贝函数 strcpy()
格式:strcpy(oldStr,newStr);
介绍: 把newStr拷贝到oldStr中,newStr会覆盖掉oldStr中的内容
注意:oldStr数组要足够大,否则会越界。
6.字符串比较函数 strcmp()
格式:strcpy(str1,str2);
介绍:比较两个字符串的大小,比较字符的ascii码值大小,比较过程是两个字符串的字符逐个比较。
注意:函数有返回值 返回值大于0,str1>str2;小于0,str1<str2;等于0,str1==str2.
7.字符串长度计算函数 strlen()
格式:strlen(字符串数组名);
注:长度不包括\0。
三:单词首字母大写并统计单词个数
四:为什么使用指针
1.指针的基本概念
内存单元的编号也叫做地址,既然根据内存单元的编号或地址就可以找到所需要的内存单元,所以通常也把这个地址称为指针。
2.使用指针的好处:
3.变量的存取方式
分为两种:直接存取(通过变量名获取存储单元的值)和间接存取(通过地址也就是指针获取存储单元的值)
4.指针变量
1)定义:在C语言中,允许用一个变量来存放指针,这种变量称为指针变量,因此,一个指针变量的值就是某个内存单元的地址或称为某内
存单元的指针。
2)注意:严格意义上说,指针是一个地址,是一个常量
指针变量是存放一个地址,是一个变量。
3)指针变量和变量图解:
5.定义一个指针变量:
6.指针变量注意事项:
五:指针变量的初始化和引用
1.指针变量的初始化方法
1)定义时初始化
int a = 5;
int *p = &a;
2)先定义后初始化
int a;
int *p;
p = &a;
3)指向NULL或0
int *p = NULL;
int *p = 0;
易犯得错误:int *p = 1000; 这是错误的写法。
2.使用*获取指针对应存储区域内容
例子:
int a = 12;
int *p = &a;
int value;
value = *p;
//获取p指向的内存空间的内容
六:用函数实现两个变量值的交换
七:指针常见的应用场景
1)在被调函数中可以修改主调函数中的变量的值
2)让函数有多个返回值
八:二级指针介绍
1.如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。也称为多级指针
九:指针为什么要区分类型
1.在同一个编译器下,一个指针变量所占用的内存空间是固定的。比如,在16位编译器环境下,任何一个指针变量都只占用2个字节,并不会随所指
向变量的类型而改变。
2.虽然所有的指针(地址)都只占8个字节,但不同类型的变量却占不同的字节数。
3.图解定义不同类型指针的意义:
一:以字符串的形式输入输出
1.使用的格式字符串为“%s”,表示输入,输出的是字符串。
2. 用%s输出一个字符串时,需给定字符数组首地址。
3.用%s接收键盘输入的一个字符串,输入时注意如果输入的字符串有空格,则空格之后的字符无法被接收保存
二:字符串处理函数
1.使用其他字符串函数应该包含头文件"string.h"。例如使用strcat()需要包含string.h头文件,puts()和gets()需要包含stdio.h头文件
2.字符串输出函数 puts()
格式: puts(字符数组名);
以前输出字符串:
char str[]="abc";
printf("%s\n",str);
用puts()函数:
puts(字符数组名);
3.字符串输入函数 gets()
格式: gets(字符数组名);
以前输入字符串:
char str1[100];
scanf("%s",str1);
用gets()函数:
gets(字符数组名);
使用gets()函数可以接受包含空格的字符串。
4.连接两个字符串 strcat()
//必须引入头文件"string.h"
格式: strcat(A,B);
注:1)字符数组A的长度要足够能保存下字符串A+B的长度。
2)B把A字符串的最后一个字符\0覆盖后连接在A后面。
5.字符串拷贝函数 strcpy()
格式:strcpy(oldStr,newStr);
介绍: 把newStr拷贝到oldStr中,newStr会覆盖掉oldStr中的内容
注意:oldStr数组要足够大,否则会越界。
6.字符串比较函数 strcmp()
格式:strcpy(str1,str2);
介绍:比较两个字符串的大小,比较字符的ascii码值大小,比较过程是两个字符串的字符逐个比较。
注意:函数有返回值 返回值大于0,str1>str2;小于0,str1<str2;等于0,str1==str2.
7.字符串长度计算函数 strlen()
格式:strlen(字符串数组名);
注:长度不包括\0。
三:单词首字母大写并统计单词个数
#include<stdio.h> int main(){ //定义变量 char str[100]; int counts=words=0; //提示用户输入字符串 printf("请输入一个字符串:\n"); //接收字符串,并保存到数组中 gets(str); //循环取出每一个字符,遇到\0循环结束 for(int i=0;str[i]!='\0';i++){ //判断 if(str[i]==' '){ words = 0; }else if(words==0){ counts++; str[i] = str[i]-32; words =1; } } printf("单词格式%d,字符串:%s",counts,str); puts(str); return 0; }
四:为什么使用指针
1.指针的基本概念
内存单元的编号也叫做地址,既然根据内存单元的编号或地址就可以找到所需要的内存单元,所以通常也把这个地址称为指针。
2.使用指针的好处:
3.变量的存取方式
分为两种:直接存取(通过变量名获取存储单元的值)和间接存取(通过地址也就是指针获取存储单元的值)
4.指针变量
1)定义:在C语言中,允许用一个变量来存放指针,这种变量称为指针变量,因此,一个指针变量的值就是某个内存单元的地址或称为某内
存单元的指针。
2)注意:严格意义上说,指针是一个地址,是一个常量
指针变量是存放一个地址,是一个变量。
3)指针变量和变量图解:
5.定义一个指针变量:
6.指针变量注意事项:
五:指针变量的初始化和引用
1.指针变量的初始化方法
1)定义时初始化
int a = 5;
int *p = &a;
2)先定义后初始化
int a;
int *p;
p = &a;
3)指向NULL或0
int *p = NULL;
int *p = 0;
易犯得错误:int *p = 1000; 这是错误的写法。
2.使用*获取指针对应存储区域内容
例子:
int a = 12;
int *p = &a;
int value;
value = *p;
//获取p指向的内存空间的内容
六:用函数实现两个变量值的交换
#include <stdio.h> void swap(int *a,int *b){ int temp; temp = *a; *a = *b; *b = temp; } int main(){ int a = 4,b = 5; printf("交换前:a= %d,b = %d\n",a,b); swap(&a,&b); printf("交换后:a= %d,b = %d\n",a,b); return 0; }
七:指针常见的应用场景
1)在被调函数中可以修改主调函数中的变量的值
2)让函数有多个返回值
八:二级指针介绍
1.如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。也称为多级指针
九:指针为什么要区分类型
1.在同一个编译器下,一个指针变量所占用的内存空间是固定的。比如,在16位编译器环境下,任何一个指针变量都只占用2个字节,并不会随所指
向变量的类型而改变。
2.虽然所有的指针(地址)都只占8个字节,但不同类型的变量却占不同的字节数。
3.图解定义不同类型指针的意义:
相关文章推荐
- C++ 2048简化版
- C语言memset学习
- C语言 学生成绩管理系统
- C++基础---自增自减运算符
- C++中cin.getline()、getline()、cin.get()区别
- 贪心算法之Evil Straw Warts Live
- C++容器之Vector
- C++之const
- C++之友元
- C语言中函数参数入栈的顺序 - Fangzhen - 博客园
- C++基础---三目运算符
- C++引用详解
- C++虚函数
- C++ Primer : 第九章 : vector变长、string的其他操作以及容器适配器
- C++基础---运算符
- Binary Tree Level Order Traversal
- 函数的重写,重载
- 一起talk C栗子吧(第三十六回:C语言实例--螺旋矩阵)
- 选择排序(C++版)
- [LeetCode] 032. Longest Valid Parentheses (Hard) (C++)