C语言问题
发表时间:2020-10-19
发布人:葵宇科技
浏览次数:45
- 双引号(字符串)可以赋值给一个char类型的变量吗?
不行,会提示[Warning] initialization makes integer from pointer without a cast;初始化从指针生成整数而不进行强制转换。
也就是说,对于字符串,其实际上是一个指针,??? - 定义函数中有打印语句在进行调用时怎么打印出来?
直接进行调用即可 - 如何将字符串赋值给变量?
方法1:
char str[]=字符串"
方法2:
定义指针,c语言中j将一个字符串赋值给一个变量实际上是将这个字符串的第一个地址赋值给了这个变量,
# include <stdio.h>
int p1(){
char b[] = "ceshi"
}
int test(){
char *str = "ceshi";
printf("%s", str);
return 0;
}
int main(){
p1();
test();
}
-
字符串的长度是否包括结尾的
\0
?
包括,测试结果如下
-
位运算符
&
按位与运算
|
按位或运算
^
按位异或,异或就是两个不同才为1,两个相同均为0
~
求反运算, -
运算符的优先级
-
强制类型转换
如何将两个整整型相除的结果转为浮点型:
int a,b;
float c;
c = (float) a/b;
整型变量 = 整型+浮点型—> 整型
浮点型变量 = 整型+浮点型—>浮点型
整型变量 = 整型*浮点型—>整型
整型变量 = 整型/浮点型—>整型
浮点型变量 = 整型*浮点型—>浮点型
8. ++i 和 i++ 的区别
int i, j, m, n;
i = 2;
j = 5;
m = i++ /* 先进行m=i的赋值操作,再进行i+1操作*/
n = ++j/*先进行j+1操作,再进行n = j的赋值操作*/
/*
总结:++再前先++
++在后后++
*/
- 什么是解引用?
将取值运算符作用于一个地址上,将一个地址的值取出来成为解引用
int a[3][4];
*(a+1)/*表示的a[1]
- 什么是语法糖?
语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
举个例子:在C语言里用a[i]表示*(a+i),用a[i][j]表示*(*(a+i)+j),由此可见语法糖不是“现代语言”独有,这种写法简洁明了,容易被人理解。
- 在数组中,如果有一个值被初始化了,其他没有指定初始化的值会默认初始化为0;
- scanf 无法接受含有空格的函数,只能用gets()
- 头函数string.h中,strcat(A,B)是将B字符串拼接在A字符串后面。
- 在字符串中,数字给某一位赋值0代表着将其变成了‘\0’,字符串在打印输出时,遇到第一个‘\0’就会结束打印。
- 二维数组初始化问题:????