㈠ c语言问题,str是一个指针的名字,为什么用%s输出,str前面不加*就能直接打印出hello world,加了*却不行
str是指针变量,其中存放的是在常量区存放的字符串首地址
用%s输出时,printf语句要求提供字符串首地址,给出str变量存放的首地址即可
*str是str指向的单元,即字符串第1个字符的内容'h',类型是char,并不是地址(指针)类型
㈡ C语言打印输出指针数组
指针传递的实质就是传递首地址,要取地址里面的数据就要叫*或者直接指定加[m],比如*argv,和argv[0]意思都是一样的。
㈢ C语言指针输出数据问题
这就是规则,格式符%s的含义就是:把对应的值看做一个地址,按字节读取,然后输出读取到的值所对应的ASCII码,直到碰到0为止
p1是个地址,假设p1的值是1000(也就是数组a的起始地址),那么从1000开始依次读取到HIKARI\0 然后输出
如果是*p1 那么*p1是'H','H'的ASCII值是72, 那么printf("%s",*p1); 就是从地址72开始读取,也就是printf("%s",72); 而地址72是不允许用户程序操作的,会出错。
再举个例子:
int a = 4407873;
printf("%s", &a);
会输出ABC 因为变量a内存空间的值按字节看就是'A','B','C','\0'
㈣ 写程序(C语言),使用指针实现打印一维数组所有元素的操作。
#include
void main()
{
int a[100],*p;
int n,t;/*你所要输入数字的个数*/
p=a;
printf("please input number n:");
scanf("%d",&n);
t=n;
while (n--)scanf("%d",p++);/*以此输入要输入的数字*/
p=p-t;
for(int i=0;i
㈤ 如图,c语言中级问题,一级数组指针s用打印*s是啥意思
为什么是输出%d, *s, 不是应该输出%p吗
*s = p = &a;您可以试一下
int (*s)[6] = &arr;//定义了一个二维数组,每一行有6列;
s就是行指针, *s也就是第一行地址,也就是你赋值给的&arr,
㈥ c语言printf()输出指针
#include<stdio.h>
intmain()
{
char*p="123";
printf("%s",&*p);
printf(p);
return0;
}
%s输出时 要用&取变量地址,也就是printf("%s",地址);
而p指针代表的就是字符串"123"的地址值.
㈦ c语言,关于字符指针
首先指针变量s内存储的是地址,所以打印s的值肯定是地址。
*s="abcde";这句代码的意思是:将字符串“abcde”的首地址也就是“a”的地址赋值给指针变量s.
s+=2;这句代码意思是s=s+2;即将s+2的地址赋给s,也就是字符“c”的地址,所以现在s的值为“c”的地址。
打印出“cde”:在原代码的基础上:
printf("%s",s);
满意请采纳,不懂请追问。
㈧ c语言关于打印指针所指的值的问题
只有一个问题,把printf("%s",*b);这一句中的“*”去掉,改成:
printf("%s",b);
就能打印“abc”了。
有什么问题请留言。