當前位置:首頁 » 編程語言 » c語言printf指針
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言printf指針

發布時間: 2022-11-30 06:20:19

c語言中如何借用指針輸出字元串

使用指針輸出字元串有以下幾種方式:

1、使用printf 函數進行輸出,其使用的格式轉換符為%s,如

char*str="test";//指針指向一個字元串

printf("%s ",str);//輸出str指向的字元串

2、使用puts函數進行輸出,如

char*str="test";

puts(str);//輸出str指向的字元串,會自動多輸出一個換行

3、使用自定義函數進行輸出,如

voidmyPuts(char*str)//自定義輸出函數

{

if(!str)return;

while(*str!=''){

putchar(*str);

str++;

}

}

char*str="test";

myPuts(str);

(1)c語言printf指針擴展閱讀:

C++指針與字元串

1、C語言里沒有字元串數據類型,要想獲得字元串的表示形式利用字元數組

#include<iostream>

using namespace std;

#include<stdlib.h>

void main()

{

char ar[]={'a','b','c','d'};

cout<<ar; //字元串後無結束符,會有多餘列印

cout<<endl;

char br[]={'a','b','c','d',''};

cout<<br;

cout<<endl;

char cr[5]="abcd"; //字元串結尾默認隱藏了

cout<<cr;

system("PAUSE");

}

2、C語言里沒有字元串數據類型,要想獲得字元串的表示形式利用字元指針

#include<iostream>

using namespace std;

#include<stdlib.h>

void main()

{

char *p="hello world";

cout<<p;

//整形的指針,列印指針時只能列印其內部地址

//字元指針,列印指針時也是地址,但是這個被看作字元指針後,會列印該指針指向地址內存放的字元串,列印直到遇到為止

system("PAUSE");

}

3、靜態常量區的字元串存儲及指針訪問

#include<iostream>

using namespace std;

#include<stdlib.h>

#include<string.h>

void main()

{

char *p="hello world"; //hello world存放在內存的靜態常量區

//指針變數p存儲的是該靜態常量區的首個字元地址

//不能通過指針修改靜態常量區的字元,但是可以通過指針訪問

int length=strlen(p);

//strlen計算的是字元串p的有效長度,不算

for(int i=0;i<length;++i)

{

cout<<p[i];

}

system("PAUSE");

}

❷ C語言中printf中參數可以是指針

指針也是一種數據類型,只是他存儲特殊的地址值。然而printf是可以輸出所有數據類型的,比如,%c,%d,%f,%x
int dNun=1;
char cChar='a';
float fNum=0.0f;
int* p=&dNum;
printf(",%c,%d,%0.2f,%x",cChar,dNum,fNum,p);

❸ 關於C語言printf輸出字元型指針變數的問題

%s指定了格式,函數用字元串指針的格式來理解str
如果只要輸出地址值,用%d,是按照整型格式來理解str
多說一點,如果用%d來解析浮點類的,是得不到浮點值的,因為格式理解錯誤,並且不會去進行隱式類型轉換,需要用%f,或者顯示的進行轉換.

❹ C語言 Printf一個指針(字元串)的問題

#include"stdafx.h"
#include<stdio.h>
typedefstructperson
{
char*Name;
}person;
personstu={"Admin"};

voidmain()
{
char*mName="Admin";
/*char*mName和stu.Name指向同一地址而這地址是系統臨時分配的常量字元串首地址;而這臨時分配的常量內存會隨著生命周期釋放掉
*/
printf("%s ",stu.Name);
printf("%s ",mName);
return;
}

❺ C語言 printf("%s",p)

char p 首先它是一個常量,如果是char p[10] = {};那麼它就是一個變數。常量的值只可以讀取不可以寫入,變數的值可讀可寫。
在用printf語句列印%s的時候,printf語句要求提供字元串首地址。這是printf所規定的,也就是看到%s,printf就要求指針變數,而不是我們邏輯上認為的指針裡面所存儲的內容。所以用printf("%s",p);而不是printf("%s",
p); 這一點必須記住。如果用%c,想輸出裡面的內容就可以按照正常的指針概念,用*p了。可以執行一下這一條語句char * p = "string pointer dam fucking sucks!"; printf("%s %p %c ", p, p, *p);

你會發現c實際上沒有string類型。那麼c的%s怎麼來的呢?用char數組代替。那麼%s如何工作?它會從所給指針指向的位置開始,逐字元的列印輸出,直到遇到「/n」或者「/0」。所以%s需要的只是一個指針值。(或者說數組第一個值的內存地址)讀取了第一個值後,它會跳到後面的位置繼續讀取,這建立在你傳給它的值是指針的前提上。如果你用了 ,結果只得到了第一個字元而沒有指針( 表示取出指針所指位置保存的值),程序不知道後續字元的儲存位置,它去哪裡找?再說%d,%d只列印一個十進制數值,不需要後續繼續列印,所以直接給它這個數值就行了。(*是什麼意思不需要我再說一遍了吧?)

❻ c語言printf()輸出指針

#include<stdio.h>

intmain()
{

char*p="123";
printf("%s",&*p);
printf(p);
return0;
}

%s輸出時 要用&取變數地址,也就是printf("%s",地址);

而p指針代表的就是字元串"123"的地址值.

❼ C語言 指針 printf("%p\n",a)中%p什麼意思

p表示指針,輸出指針所指向的內容。還有很多的轉換說明符,如下:轉換說明符
%a(%A)
浮點數、十六進制數字和p-(P-)記數法(C99)
%c
字元
%d
有符號十進制整數
%f
浮點數(包括float和doulbe)
%e(%E)
浮點數指數輸出[e-(E-)記數法]
%g(%G)
浮點數不顯無意義的零"0"
%i
有符號十進制整數(與%d相同)
%u
無符號十進制整數
%o
八進制整數
e.g.
0123
%x(%X)
十六進制整數0f(0F)
e.g.
0x1234
%p
指針
%s
字元串
%%
"%"希望對你有所幫助。

❽ c語言請問這個指針printf輸出的%XH是正確的嗎 如果正確為什麼xh 啥意思

是正確的。

%X表示以16進制字母大寫(因為x是大寫的)的形式輸出指針的值,後面的H只是一個後綴,輸出時會原樣輸出H,其作用是提示這是一個16進制數。

比如,如果指針的值是a1b2c3d4,則輸出就是A1B2C3D4H。

❾ C語言中的printf是什麼意思

printf()是C語言標准庫函數,用於將格式化後的字元串輸出到標准輸出。標准輸出,即標准輸出文件,對應終端的屏幕。printf()申明於頭文件stdio.h。

函數原型:

int printf ( const char * format, ... )。

返回值:

正確返回輸出的字元總數,錯誤返回負值,與此同時,輸入輸出流錯誤標志將被置值,可由指示器ferror來檢查輸入輸出流的錯誤標志。

(9)c語言printf指針擴展閱讀

printf()函數的調用格式為:printf("格式化字元串",輸出表列)。

格式化字元串包含三種對象,分別為:

(1)字元串常量;

(2)格式控制字元串;

(3)轉義字元。

字元串常量原樣輸出,在顯示中起提示作用。輸出表列中給出了各個輸出項,要求格式控制字元串和各輸出項在數量和類型上應該一一對應。其中格式控制字元串是以%開頭的字元串,在%後面跟有各種格式控制符,以說明輸出數據的類型、寬度、精度等。

註:本文的所有示例代碼均在Linux環境下以g++ 4.4.6編譯成64位程序的執行。

❿ c語言 關於printf()和指針

p的類型是char *,這是printf要求字元串輸出時提供的數據類型,即指針或地址,是字元串首字元地址
*p的類型是char,只是一個字元,而且是字元的內容(ASCII碼),不是地址,與printf的%s要求提供的字元地址不符