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

C语言字符串指针---与数组0811

2016-08-11 20:09 302 查看
今天的主要内容是字符串与指针

将指针指向字符串,则形成了一个较为灵活的字符串指针的操作,用指针指向字符串,和指针指向数组是基本一致,

不同点:唯一不同点在于如何判断指针指向数组,或字符串的结束位置。

当指针指向数组是判断数组的结束是由用户控制,就是由数组的长度决定。

儿字符串的优势结束标志是’\0’来判定字符串结束。

下面的的代码来说明一个小问题:

int i, j;
char ch1[] = "i love China";
char *p;
p = ch1;
printf("请输入i到j之间的字符");
scanf_s("%d,%d", &i, &j);
*(p + j) = '\0';
printf("%s\n", p + i);
system("pause");


也即是说通过指针来获取数组的位置,可以通过指针的数组的位置来获取字符串的长度,可以通过i,j\来获取起始位置,终点位置。

字符串指针作为函数参数

我的理解,数组,指向字符串首地址的字符指针也可以作为函数的参数。

总结下这周的重要内容

C语言最强悍的的语言—–指针

1,首先要讲的是内存还有地址*强调内容*

int a=1;

int *p;

p=&a;

这句简单的 代码就是取a的地址给p,p就可以打印a的值。

2,指针与指针变量。

2-1指针:一个变量的地址。

2-2指针变量:专门存放变量地址的变量叫指针变量。

*3, 指针变量的声明与初始化。*

int i=10;

int *p; //指针变量的声明

*p=1;// 指针必须先赋值在操作

*4,指针变量的取地址操作。*

int num ,*p,用&取地址

*5指针变量占据的内存空间*

指针变量声明后,编译器为其开辟一定的内存空间,指针变量也占有一定的内存变量。

*6指向指针的指针,*

指针变量也是指针,占有空间,也有地址,可以用一个指针指向它,也就是二级针。

double num ;

double *pN=num;

double **ppN=&pN;

*7指针的算数运算,*

指针是一种特殊的变量,但是指针的运算还是局限在于加减算法。

指针的运算:

p=&a; //将变量a的地址给p;

p=array; //将数组的首地址给p;

p=&array[i] //讲数组的地址p;

指针的算数运算:

int *p,arr_num[8]; //定义数组还有指针

p=&arr_num[0]; //取数组的首地址

p++; // 地址做运算 可以看到移动的单位

*8指针与数组–指向数组元素的变量*

例如: int array[10]; int *p;

p=&array[0]; //等价于p=array;

或者 int *p=&array[0];

或者 int *p=array;

数组名是表示数组首地址的地址常量

注意:数组名a不代表整个数组,只代表数组的首元素的地址

“p=a“的作用是把a数组的首元素的地址赋给指针变量p

不是把数组中每个元素的地址给p;

*9指针与多维数组*

也就是指针与二维数组

也就是有一个公式 ((a+i)+j)=a[i][j];

行指针代表的是a[0] 到a[1] a[3]

列指针代表的是a[0]到 a[0]+1;a[0]+2 ;a[0]+3

*10数组作为函数的参数也是指针*

实参数组名是指针常量,但是形参数组名是安指针变量处理

在函数调用进虚实结合后,他的值就是是实参数组的首地址。

在函数执行期间,形参数组可以再被赋值,

void fun(arr[],int n){
printf("%d\n",*arr);
arr =arr +3;
printf("%d\n",*arr);
}


*11指针数组函数*

指向函数的指针可以作为函数参数,把函数的入口地址传递给形参,这样就可以在被调用的函数中使用实参函数。

*12函数指针–函数的返回值*

函数可以返回各种类型,也可以返回指针的数据,就是地址,

*13字符串的操作*

首先注意的是字符串数组‘\0’表示结尾

*14字符串数组的定义还有初始化,*

char 数组名【常量表达式】

char a[100]; //定义·

char c[5]={‘a’,’b’,’c’,’d’,’e’};

如果初始化时初值大于数组长度,会报错。

如果初始化时初值小于数组长度,系统会为剩余元素自动赋值为‘\0’;

*15字符串指针输出字符*

char str[20]; str=’ I love China’;/错误的表达方式

char *cp; cp=’ I love China’; // 正确的

str 是地址常量 ;cp是地址变量

16字符串与字符数组的关系

17字符串的大写函数strupr

*18字符串复制的的函数strcpy*

*19字符串比较函数strcmp*

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