常量

Head First C学习日志,第二章 用指针输入数据

隐身守侯 提交于 2020-02-29 01:27:06
1.scanf scanf的调用格式为: scanf("< 格式说明字符串 >",< 变量地址 >); 第2个参数一定是一个地址。 1.1输入字符串: char name[40]; printf("Enter your name:\n"); scanf("%39s",name); 格式字符串%39s表示:最大接受39个字符(+’\0’),第2个参数name,是数组名作为指针使用,把地址传进了函数,scanf()便可以更新变量的内容。 1.2输入数字 int age; printf("Enter your age:"); scanf("%d",&age); printf("age:%d\n",age); 格式字符串为%d,则接受的第二个参数为一个int*指针。 数组越界问题:如果忘记限制读取字符串的长度,用户就可以输入远远超出程序空间的数据,多余的数据会写到计算机还没有分配好的存储器中。缓冲区溢出很有可能会导致程序出错。 2.使用fgets输入 fgets和scanf一样,接受char指针,不同的是,你必须给它最大长度: char food[5]; printf("Enter favorite food:"); fgets(food,sizeof(food),stdin); 第1个参数为,接受指向缓冲区的指针,第2个参数为,接收字符串的最大长度(包含’\0’),第3个参数为输入

C语言常量指针与指针常量

邮差的信 提交于 2019-11-28 14:41:38
常量指针,表述为“是常量的指针”,就是指向常量的指针,关键字 const 出现在 * 左边,表示指针所指向的地址的内容是不可修改的,但指针自身可变。 指针常量,表述为 "是指针的常量", 指针吱声是一个常量,关键字 const 出现在 * 右边,表示指针自身不可变,但其所指向的地址的内容是可以被修改的。 例: 常量指针:const char* ptr = "hello" 指针常量:char* const ptr = "hello" 这里看关键字靠着谁近,const靠着ptr近说明就是指针常量,就是指针自身不能改变,但所指向的数据可以变;const靠着类型近,说明指针所指向的内容不可变,但指针可以变。 常量指针有两种写法:const既可以写在类型前,又可以写在类型后。如上面的例子,常量指针: char const* ptr = "hello" 也是正确的。 最后在举个例子,与迭代器经常在一起用。若希望迭代器所指向的东西不可变,则需要的是 const_iterator。例: std::vector<int>::const_iterator iter = vec.begin(); *iter = 10; //错误,iter是常量指针 iter++;//正确,iter本身可变 若希望迭代器本身不可变,指向的内容可变,则可以这样写: const std::vector<int>: