标签:
1.指针
指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值;
指针的定义格式:
数据类型 * 变量名称;
注意:
1.定义时确定了指针变量的类型,那么该指针就只能保存对应类型变量的地址.
int number = 10; int *pointer ; //定义了一个int 类型的指针 pointer = &number;//该指针变量存储了number变量的地址,我们就认为pointer指针指向了number
2.指针只能存放地址.
3.同一个变量可以有多个指针指向他
int number = 10; int *pointerOne = &number; int *pointerTwo = &number; //有两个指针指向了number变量
4.指针可以更改指向的变量
int numberOne = 10; int numberTwo = -1; int *pointer = &numberOne;//指针指向了numberOne int *pointer = &numberTwo; //指针指向了numberTwo
5不能访问野指针(没有指向的指针成为野指针)
2.字符串指针
在C中,字符串有两种形式来存储字符串,1.通过数组来存储. 2.通过指针
两者的区别:
1.通过数组存储的字符串,它是一个变量,存储在内存的栈中,可以被修改.
2.字符串指针,它是一个常量,存储在常量区,不能别修改.
3.指针数组
用来存储指针的数组
定义格式: 数据类型 *数组名称[数组长度]
char *str1 = "aaa"; char *str2 = "bbb"; char *str3 = "ccc"; char *array[] = {str1, str2, str3 }; for (int i = 0; i < 3; i ++) { printf("%s\n",array[i]); }
4.指向函数的指针
定义格式:返回值类型 (* 指针变量名称) (函数参数列表);
注意:
1.函数也会被分配存储空间,函数名保存了函数的地址,与数组类似.
2.C语言中函数中不能定义函数,所以我们可以利用函数指针在函数内部来调用不同的函数
#import <Foundation/Foundation.h> void upChar(char *charValue); void lowerChar(char *charValue); void changeChar(char str[],void (* style)(char *)); int main(int argc, const char * argv[]) { //将输入的字符串大写转小写,小写转大写 //1.提示用户输入 printf("请输入一段英文"); char str[100] = {0}; gets(str); //此方法不安全 changeChar(str,upChar);//大写 changeChar(str, lowerChar);//小写 printf("%s",str); return 0; } //更改字符串 void changeChar(char str[],void (* style)(char *)) { char *pointer = str; while (*pointer != ‘\0‘)//取出字符串的每个字母 { style(pointer); pointer++; //指针内的地址递增,递增单位是数据类型所占字节数 } } //小写 void upChar(char *charValue) { if (*charValue >= ‘a‘ && *charValue <= ‘z‘) { *charValue = *charValue - (‘a‘ - ‘A‘); } } //大写 void lowerChar(char *charValue) { if (*charValue >= ‘A‘ && *charValue <= ‘Z‘) { *charValue = *charValue + (‘a‘ - ‘A‘); } }
标签:
原文地址:http://www.cnblogs.com/kk657483726/p/5135357.html