A. c語言 關於地址表示方法
ch+1可以
ch++不行,因為ch是數組名,C語言規定數組名是常量,不允許修改
&ch[0]+1可以
&ch[1]可以
B. c語言地址
兩個變數a和b,賦值又不一樣,你想讓什麼一樣?輸出不是很正常嗎?到底想問什麼問題說清楚我給你解答……關於地址:C/C++是從高到低安排地址的,先是a的地址,佔4位元組,再是b的地址也佔4位元組。這里&a是0C而&b是08,剛好a在上b在下且相差4位元組,完全正確。其他不同與a、b的值不等相對應。
C. C語言用什麼操作地址
在計算機科學中,指針(Pointer)是編程語言中的一個對象,利用地址,它的值直接指向(points to)存在電腦存儲器中另一個地方的值。由於通過地址能找到所需的變數單元,可以說,地址指向該變數單元。因此,將地址形象化的稱為「指針」。意思是通過它能找到以它為地址的內存單元。在高級語言中,指針有效地取代了在低級語言,如匯編語言與機器碼,直接使用通用暫存器的地方,但它可能只適用於合法地址之中。指針參考了存儲器中某個地址,通過被稱為反參考指針的動作,可以取出在那個地址中存儲的值。作個比喻,假設將電腦存儲器當成一本書,一張內容記錄了某個頁碼加上行號的便利貼,可以被當成是一個指向特定頁面的指針;根據便利粘貼面的頁碼與行號,翻到那個頁面,把那個頁面的那一行文字讀出來,就相當於是對這個指針進行反參考的動作。
D. C語言地址傳遞具體過程
int **s; //二維指針
int *t=&k ; //t的值是k變數的地址
s=&t ; //s的值是t的地址
*s=&m ; //*s得s就是t 即t=&m; t的值變成m的地址了
printf("%d.%d.%d", k,*t,**s );
k=7
*t=m=5
**s=m=5
輸出7,5,5
E. C語言里地址的問題
可以理解成內存就是一個大賓館,裡面的房間都有門牌號,這個門牌號就是地址的值,房間就是一個空間(空間多大呢?比如int的可以用sizeof(int)來算)。
這個地址是有值得,用十六進制來表示&x(hex)。或者%p列印地址。
數組的(首)地址就是數組名,比如ints[10],s就是地址。
指針,p是指針本身,*p才是指針這個空間(房間中,p有自己的房間號,*p是p的房間裡面存的一個房間號)中的存儲的地址。
但是真正用的時候,一般不用地址做運算,都是用地址裡面的數據。gets(s)也是對這個地址的連續空間裡面進行數據的輸入。
具體地址怎麼表現的呢,給你做了一張圖:
F. c語言選最優地址
c語言選最優地址可以使用遞推法。
遞推是按照一定的規律來計算序列中的每個項,通常是通過計算前面的一些項來得出序列中的指定項的值。其思想是把一個復雜的龐大的計算過程轉化為簡單過程的多次重復,該演算法利用了計算機速度快和不知疲倦的機器特點。
當前階段,在編程領域中,C語言的運用非常之多,它兼顧了高級語言和匯編語言的優點,相較於其它編程語言具有較大優勢。計算機系統設計以及應用程序編寫是C語言應用的兩大領域。同時,C語言的普適較強,在許多計算機操作系統中都能夠得到適用,且效率顯著。
G. 關於C語言數組的地址
數組名就是數組的首地址啊。
直接使用swaps(a,b)就可以
不過其實你子函數就寫錯了,根本就不是你所說的用數組地址做形參。而是要求用一個 二維數組或者是指針數組作為實參。
正確的代碼如下
#include<string.h>
#include<stdio.h>
chard[100];
voidswaps(char*p,char*q)
{
if(strcmp(p,q)>0)
{
strcpy(d,p);
strcpy(p,q);
strcpy(q,d);
}
}
intmain()
{
chara[]="",b[]="",c[]="";
printf("請輸入三個字元串,每輸入一個字元串按回車確認 ");
gets(a);
gets(b);
gets(c);
swaps(a,b);
return0;
}
voidswaps(char*p,char*q)就是要求傳一個地址(指針),而如果你使用
voidswaps(char*p[],char*q[])則意義就不對了,而是要求一個指針數組
H. C語言指針指定地址
首先,不能這樣做,你c語言操作的地址並不是真實的地址,是操作系統從內存的某一段虛擬給你的地址,每次都不一樣,每個程序所使用的內存互不幹擾。
第二,而你的程序退出後,所擁有的空間就被系統全部回收了。也就不存在了。否則,你c語言亂改一通,要是改到系統正在用的內存,系統不就出現異常了嗎。內存並不是由你管理的,而是操作系統管理的。
假設 a程序的 p指針,指向 0xaaa地址 ,你修改 b程序的 p指針,指向0xaaa,也是無法修改的,每個程序的內存都是系統虛擬的。保證程序可以安全穩定的執行。