❶ 怎麼理解c語言指針中 *a=*b
你好!!!
首先我們已經知道:a,b,都是指針變數,*a表示指針變數所指向的值,同樣*b也是如此。*a=*b就是表示把指針b所指向的值賦值給指針變數a所指向的值。
但是要是指針a要是沒有初始化或是開辟空間的話,這樣賦值就有危險!!!
例如:
int *a;
int *b=5;
*a=*b;
首先聲明一個指針變數a,但是系統並沒有為其分配空間,也就是說此時指針變數的值即地址不確定的,那麼*a也就表示一個不確定的值,有可能這個值是系統的重要數據,那麼*a=*b;不就修改了系統的數據了嗎???也就變數的危險了。
所以聲明指針變數的時候一定注意初始化。
❷ c語言 中'ab'的值
a的ASCII碼是10進制的97,16進制的61,b的ASCII碼是10進制的98,16進制的62,順序寫到一起是16進制的6162,轉換為10進制就是24930。
'ab'佔用2個位元組(字面上是這樣),賦給int類型變數在某些編譯器(如Dev-C++)中是可能的,但沒有推廣價值,也米有應用價值,所以這也不會出現在考試、或者筆試題目中。
❸ C語言,指針題。第一個答案是abABC,怎麼解釋。為什麼後面的沒了謝謝。
因為strcpy的時候會見「ABC」後默認的'\0'也拷貝的,而且%s類型輸出的時候只認'\0',所以會是abABC,s[6]為g是因為在定址的時候會默認向後找的
❹ C語言中指針a=b與*a=*b有什麼區別
a=b就是把b的地址賦給a
*a=*b就是把b的內存地址對應的值給a
❺ C語言問題,輸入ab兩個整數按順序輸出。用指針做。
使用指針把變數交換
如:
int t;
if(*p1>*p2){
t=*p1;
*p1=*p2;
*p2=t;
}
指針交換
int *pt;
if(*p1>*p2){
pt=p1;
p1=p2;
p2=pt;
}
❻ C語言ab+方式打開文件以及fseek函數
打開文件可以用fopen。
函數原型:FILE * fopen(const char * path,const char * mode);
返回值:文件順利打開後,指向該流的文件指針就會被返回。如果文件打開失敗則返回NULL,並把錯誤代碼存在errno中。
一般而言,打開文件後會做一些文件讀取或寫入的動作,若打開文件失敗,接下來的讀寫動作也無法順利進行,所以一般在fopen()後作錯誤判斷及處理。
打開文件實例:
#include<stdio.h>
#define F_PATH "d:\\myfile\\file.dat"
int main(void)
{
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"ab+");
if(NULL==fp)
{
return -1;//要返回錯誤代碼
}
fclose(fp);
fp=NULL;//需要指向空,否則會指向原打開文件地址
return 0;
}
fseek函數功能:重定位流(數據流/文件)上的文件內部位置指針
注意:文件指針指向文件/流。位置指針指向文件內部的位元組位置,隨著文件的讀取會移動,文件指針如果不重新賦值將不會改變指向別的文件
int fseek(FILE *stream, long offset, int fromwhere);
參數:stream 文件指針,fromwhere起始基準點,offset在基準點的基礎上的偏移量。
返回值:成功,返回0,失敗返回-1,並設置errno的值,可以用perror()函數輸出錯誤。
實例:
#include <stdio.h>
long filesize(FILE*stream);
int main(void)
{
FILE *stream;
stream=fopen("MYFILE.TXT","w+");
fprintf(stream,"Thisisatest");
printf("FilesizeofMYFILE.TXTis%ldbytes\n",filesize(stream));
fclose(stream);
return 0;
}
long filesize(FILE*stream)
{
long curpos,length;
curpos=ftell(stream);
fseek(stream,0L,SEEK_END);
length=ftell(stream);
fseek(stream,curpos,SEEK_SET);
return length;
}
❼ C語言用指針編程,如圖輸出為abcdr,請大神幫忙
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
intmain(intargc,char*argv[])
{
chara[10]={'