练习题目(字符指针等)
Suzhou 50 1

练习题目(字符指针等) free用来释放指针变量空间,释放后指针变量为空指针(NULL)但是free不会更改指针变量的内容。 指针的长度是4(32位)或8(64位)字节。 如指针的数据类型是int * ,指针实际指向内容的类型是int。


练习题目(字符指针等) 上图中“hello world”是一个常量字符串,将字符串的首元素h的地址存放在指针p中, * p解引用后 * p为h,不等价于hello world。


练习题目(字符指针等) p=&arr中,arr是数组,数组的地址只能存放在数组指针中。


练习题目(字符指针等) 数组名表示首元素地址,等同于&arr[0]。&arr表示整个数组。


练习题目(字符指针等) 两个数组的内容可能相同,但两个数组的内存空间相互独立,两个数组的数组名等于各自首元素的地址。 str1不等于str2。 两个完全相同的常量字符串在内存中只保留一份, 即str3和str4保存的地址都是常量字符串首字符的地址。 ::: warning 创建数组str:

char str[] = "hello world";  //数组内容可修改

使用指针str指向内存中常量字符串:

char* str = "hello world";  //常量字符串不可修改

数组存放在内存的栈区;常量字符串存放在内存的只读数据区中。 :::


练习题目(字符指针等)

int* fun(int a, int b);  
//函数声明,函数名是fun,参数是两个整型,返回类型是int*
int(*)fun(int a, int b);
//语法错误
int(*fun)(int a, int b);
//(函数指针)
(int*)fun(int a, int n);
//函数声明,和第一行代码一样

练习题目(字符指针等) A


练习题目(字符指针等) B


练习题目(字符指针等) 首先判断是一个数组指针,数组中每一个元素都是一个函数指针,需要有一个函数指针的数组。

A.(int* p[10]) (int*)  
//p和[]结合表示是数组,去掉数组名和[]剩下的语法错误
B.int[10] * p(int*)
//p和()结合表示是函数 
C.int(*(*p)[10])(int*)
//p和[]结合表示是数组,数组类型是int(*)指针,指向的函数参数类型是(int*)
D.int((int*)[10])* p
//语法错误

练习题目(字符指针等) B A中函数的参数类型与题目不一致。 C和D中的pf先和()结合形成函数,构成一个函数声明:参数无参,返回类型void*。

评论区

索引目录