您的位置:首页 > 编程语言 > C语言/C++

黑马程序员-----------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。

三:单词首字母大写并统计单词个数

#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.图解定义不同类型指针的意义:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: