C语言赋值语句 char*p="string"为什么是对的?
我的意思是,p既然是一个指针,那么*p是指向一个值的,*p=string才对,而题目有“”,那不就是string的地址了吗?怎么可以把地址赋给*p呢?...
我的意思是,p既然是一个指针,那么*p是指向一个值的,*p=string才对,而题目有“”,那不就是string的地址了吗?怎么可以把地址赋给*p呢?
展开
4个回答
展开全部
C语言赋值语句 char*p="string" ;是定义指针变量,并进行指针变量初始化的标准格式,没有错误。
该语句相当于以下两句:
char *p ; //定义指针变量,未初始化
p="string" ; //p指向string所在的地址,即:p中存储的是"string"串的首地址。
*是指针变量取地址中的数据运算符:
*p == 's' ; //*p是指一个字符,当前是s , 注意*p不是字完整的符串
p++ ;
*p=='t' ; //p后移一位,指向t
初学者认识的误区在于:认为char*p="string" ; 这里的* 与上面例子中的*p中的*认为是同一回事!这是错误的认识。
char*p="string" ; 中的*是指针变量定义中的标识,*跟随的是char , 即:这里是定义一个指针变量p, 其存储的数据类型是char *类型,即p本身存储的是char *类型(地址)数据。
该语句相当于以下两句:
char *p ; //定义指针变量,未初始化
p="string" ; //p指向string所在的地址,即:p中存储的是"string"串的首地址。
*是指针变量取地址中的数据运算符:
*p == 's' ; //*p是指一个字符,当前是s , 注意*p不是字完整的符串
p++ ;
*p=='t' ; //p后移一位,指向t
初学者认识的误区在于:认为char*p="string" ; 这里的* 与上面例子中的*p中的*认为是同一回事!这是错误的认识。
char*p="string" ; 中的*是指针变量定义中的标识,*跟随的是char , 即:这里是定义一个指针变量p, 其存储的数据类型是char *类型,即p本身存储的是char *类型(地址)数据。
展开全部
这涉及到指针和字符串
这条语句是采用字符指针来表示字符串。直接定义一个字符类型的指针变量,它指向的是字符串的首地址。
其实这考虑到在C语言中,没有专门的字符串型数据类型,而是把字符串看成一个特殊的字符数组。
其特殊性只不过是在字符数组后面加了一个 \0 。
你若把它看成数组,就很容易理解了吧
这条语句是采用字符指针来表示字符串。直接定义一个字符类型的指针变量,它指向的是字符串的首地址。
其实这考虑到在C语言中,没有专门的字符串型数据类型,而是把字符串看成一个特殊的字符数组。
其特殊性只不过是在字符数组后面加了一个 \0 。
你若把它看成数组,就很容易理解了吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
"string" 是一个数组,是将它的首地址赋给了p, 指针本质就是用来存放地址。你想想你对数组赋初值是怎么赋值的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个在学习c ,进来学下下!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询